国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

8皇后問題的解法實例代碼

2020-01-26 16:20:29
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

#include <stdio.h>

#define MAX 200
#define Empty 0
#define Full 1
#define N 8

unsigned char qipan[N][N][N]={MAX};//初始化8張棋盤表示每下一步的
void input(int i);
int count = 0;

int main()
{
    input(0);
    getchar();
    return 0;
}
void input(int i)
{
    int x=0,y=0;
    int p=0,q=0;
    int flag = 0;
    //初始化當前棋盤
    if(i!=0)
    {
        for(x=0;x<N;x++)
        {
            for(y=0;y<N;y++)
            {
                qipan[i][x][y] = qipan[i-1][x][y];
            }
        }
    }
    else
    {
        for(x=0;x<N;x++)
        {
            for(y=0;y<N;y++)
            {
                qipan[i][x][y] = MAX;
            }
        }
    }
    //遞歸結束
    if(i==N)
    {
        count++;
        for(x=0;x<N;x++)
        {
            for(y=0;y<N;y++)
            {
                printf("%d ",qipan[i-1][x][y]);
            }
            printf("/n");
        }
        printf("%d/n",count);
        return;
    }

    for(y=0;y<N;y++)
    {
        //找到空位
        if(qipan[i][i][y]==MAX)
        {
            //另其為1
            qipan[i][i][y] = 1;
            //前后左右上下都置為0
            for(p=0;p<N;p++)
            {
                for(q=0;q<N;q++)
                {
                    if(q==y||p==i||(p-i)==(q-y)||(p-i)==(y-q))
                        if(qipan[i][p][q] == MAX)
                            qipan[i][p][q] = 0;
                }
            }
            if(flag != -1)
            {
                //找下一個
                input(i+1);
            }
            //將棋盤變回本層原樣
            for(p=0;p<N;p++)
            {
                for(q=0;q<N;q++)
                {
                    if(i!=0)
                    qipan[i][p][q] = qipan[i-1][p][q];
                    else
                    qipan[i][p][q] = MAX;
                }
            }
            flag =0;
        }
    }
    //找不到空位結束
    return;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 佛山市| 孝义市| 呼和浩特市| 义乌市| 昆山市| 靖安县| 信阳市| 汶上县| 锦州市| 柳林县| 赣州市| 安岳县| 宾川县| 乳源| 子洲县| 滦南县| 东宁县| 镇巴县| 莲花县| 屯门区| 陆河县| 象山县| 忻城县| 屯留县| 会宁县| 永福县| 茌平县| 白水县| 卓资县| 祁东县| 思茅市| 哈巴河县| 诸暨市| 容城县| 庆城县| 荣成市| 克拉玛依市| 民县| 永春县| 彭州市| 合川市|