解题思路:
注意事项:
参考代码:
#include<stdio.h> int N,k,sum=0; int flag1[200]={0}; int flag2[200]={0}; int flag3[20]={0}; int a[20]={0}; void DFS(int i) { if(i==N+1) { sum++; if(sum<4) { for(int k=1;k<=N;k++) printf("%d ",a[k]); printf("\n"); } } else{ for(int j=1;j<=N;j++) if(flag1[i+j]==0&&flag2[i-j+N]==0&&flag3[j]==0) { a[i]=j; flag1[i+j]=1;flag2[i-j+N]=1;flag3[j]=1; DFS(i+1); flag1[i+j]=0;flag2[i-j+N]=0;flag3[j]=0; } } } int main() { scanf("%d",&N); DFS(1); printf("%d\n",sum); }
0.0分
4 人评分
C语言程序设计教程(第三版)课后习题8.1 (C++代码)浏览:757 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:1227 |
永远的丰碑 (C语言代码)浏览:653 |
C二级辅导-同因查找 (C语言代码)浏览:579 |
数列排序 (C语言代码)浏览:828 |
九宫重排 (C++代码)浏览:1326 |
三角形 (C语言代码)浏览:903 |
蚂蚁感冒 (C语言代码)浏览:1319 |
A+B for Input-Output Practice (V) (C语言代码)浏览:459 |
简单的a+b (C语言代码)浏览:572 |