懵懂的菜鸟

Stay hungry,Stay foolish.

导航

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));

 

posted on 2017-09-11 15:26  懵懂的菜鸟  阅读(457)  评论(0编辑  收藏  举报