国产探花免费观看_亚洲丰满少妇自慰呻吟_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;
}

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

圖片精選

主站蜘蛛池模板: 醴陵市| 苏尼特左旗| 济源市| 平和县| 门头沟区| 梅州市| 崇信县| 浦城县| 甘孜县| 花莲市| 双鸭山市| 金门县| 靖江市| 金溪县| 乌苏市| 台中市| 丰镇市| 青龙| 滁州市| 务川| 汝阳县| 定州市| 华池县| 金门县| 巴青县| 苗栗县| 措勤县| 青海省| 安龙县| 乃东县| 吴堡县| 加查县| 偃师市| 桃园市| 忻城县| 墨竹工卡县| 岐山县| 吉隆县| 景宁| 呼伦贝尔市| 安国市|