N皇后问题
N皇后问题
在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。
#include <cstring> #include <cstdio> int num; int a[15]; void trial(int i, int n) { if(i == n){ num++; return;} else{ for(int m=0;m<n;m++){ int ok = 1; a[i] = m; for(int j=0;j<i;j++) if(a[i]==a[j]||i-a[i]==j-a[j]||i+a[i]==j+a[j]) { ok = 0; break; } if(ok) trial(i+1,n); } } } int main() { int N; while(scanf("%d",&N) == 1 && N!=0) { num = 0; memset(a,0,sizeof(a)); trial(0, N); printf("%d\n",num); } return 0; }
1。void *memset(void *s,int c,size_t n)
总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。
2。例子
#include
void main(){
char *s="Golden Global View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return 0;
}
3。memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
4。memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, '/0', sizeof(a));
总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。
2。例子
#include
void main(){
char *s="Golden Global View";
clrscr();
memset(s,'G',6);
printf("%s",s);
getchar();
return 0;
}
3。memset() 函数常用于内存空间初始化。如:
char str[100];
memset(str,0,100);
4。memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, '/0', sizeof(a));