首页 > 其他 > 详细

八皇后乃至n皇后问题

时间:2015-12-24 19:18:02      阅读:157      评论:0      收藏:0      [点我收藏+]

几皇后问题,由n控制,在这里暂且设置为经典的八皇后。

然后显示出来的是一个女生化的棋盘的模样,

技术分享
技术分享

所有结果均打印出来了。(一共92种,笑脸为皇后)如下图

//八皇后问题 
#include<stdio.h>
static int sum=0;
#define n 8
static int queen[n];
static char p[n][n];

void init()  //数组初始化 
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            p[i][j]=3;
        }
    }
}

void show()  //打印图形,笑脸代表皇后 
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%c ",p[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}



void search(int hang)
{
    if(hang==n)
    {
        sum++;
        show();

    } 
    else
    for(int i=0;i<n;i++)//
    {
        int flag=1;
        queen[hang]=i;//尝试b把第hang行的皇后放在第i列 
        for(int j=0;j<hang;j++)//检查是否和之前的皇后冲突 
        {
            if(queen[hang]==queen[j]||hang-queen[hang]==j-queen[j]||hang+queen[hang]==j+queen[j])
            {
                flag=0;
                break;
            }
        }
        if(flag) //满足条件
        {
            p[hang][i]=1;
            search(hang+1);
            p[hang][i]=3;//清除放错的皇后 
        }
    
    }
}

int main()
{
    init();
    search(0);
    printf("%d",sum);
    return 0;
}

技术分享

八皇后乃至n皇后问题

原文:http://www.cnblogs.com/tt-t/p/5073863.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!