提交时间:2024-03-15 19:47:25
运行 ID: 138353
#include<bits/stdc++.h> using namespace std; int count=0; int m; int corrected(int i;int j;int Q[m]){ int s,t; for(s=i;t=0;t<m;t++){ if(Q[s][t]==1&&t!=j) return 0;//行 } for(t=j;s=0;s<m;s++){ if(Q[s][t]==1&&s!=i) return 0;//列 } for(s=i-1;t=j-1;s>=0&&t>=0;s--,t--){ if(Q[s][t]==1) return 0;//左上 } for(int s=i+1;t=j-1;s<m&&t>=0;s++,t--){ if(Q[s][t]==1) return 0;//左下 } for(int s=i-1,t=j+1;s>=0&&t<m;s--,t++){ if(Q[s][t]==1) return 0;//右上 } for(int s=i+1;t=j+1;s<m&&t<m;s++,t++){ if(Q[s][t]==1) return 0;//右下 } return 1; } void quene(int j,int (*Q)[m]){ int i,k; if(j==m){ for(i=0;i<m;i++){ for(k=0;k<m;k++){ printf("%d",Q[i][k]); printf("\n"); } printf("\n"); count++; return; } for(i=0;i<m;i++){ if(corrected(i,j,Q)){ Q[i][j]=1; quene(j+1,Q); Q[i][j]=0; } } } } int main(){ cin>>m; int Q[m][m]; int i,j; for(i=0;i<m;i++){ for(j=0;j<m;j++) Q[i][j]=0; } quene(0,Q); cout<<count<<endl; return 0; }