码迷,mamicode.com
首页 > 其他好文 > 详细

n皇后

时间:2015-03-21 21:14:45      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

n*n中选8个-->每行皇后选一列,用c[x]来存储列编号,枚举量为8!=40320

技术分享
void search(int cur)
{
    if(cur == n)
       tot ++;
    else for(int i = 0; i < n; i ++)
    {
        int ok = 1;
        c[cur] = i;
        for(int j  = 0; j < cur; j++)
            if(c[j] == c[cur]||j+c[j] == cur+c[cur]||j-c[j] == cur-c[cur])
             {ok = 0;break;}
        if(ok)
            search(cur+1);

    }
}
View Code

牺牲空间提高效率

技术分享
void search(int cur)
{
    if(cur == n)
       tot ++;
    else for(int i = 0; i < n; i ++)
    {
        if(!vis[0][i] && !vis[1][cur+i] && !vis[2][cur-i+n])
        {
            c[cur] = i;
            vis[0][i] = vis[1][cur+i] = vis[2][cur-i+n] = 1;
            search(cur+1);
            vis[0][i] = vis[1][cur+i] = vis[2][cur-i+n] = 0;
        }
    }
}
View Code

 

n皇后

标签:

原文地址:http://www.cnblogs.com/ekinzhang/p/4356100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!