您的位置:首页 > 其它

百练 2754八皇后问题

2014-02-21 21:41 239 查看
#include
#define maxn 9

int c[maxn];
int n, tot, x;
void search(int cur){
int i, j;
if (cur > n){
++tot;
if(tot == x){
for(j = 1; j <= n; ++j)
printf("%d", c[j]);
printf("\n");
}
return;}
for(i = 1; i <= n; ++i){
if(tot==x)	return;
int ok = 1;
c[cur] = i;
for(j = 1; j < cur; ++j){
if(c[cur] == c[j] || c[cur]+cur == c[j]+j || c[cur]-cur == c[j]-j){ok = 0; break;}
}
if(ok) search(cur+1);
}
}

int main(){
int t;
scanf("%d", &t);
while(t--){
n = 8;
scanf("%d", &x);
tot = 0;
search(1);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: