搜索题结题报告

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索题结题报告相关的知识,希望对你有一定的参考价值。

 

N皇后问题(洛谷P1219八皇后

输入n(6<=n<=13),输入n皇后的前三个解以及解的个数

DFS题,首先是从上到下枚举的,所以横向不会重复,而且有used变量,竖向不重复

如果用函数枚举和(deep,i)是否在一条线上,经过测试后,题目会卡n=13,如果把图画出来

绿色部分满足a[i]-i=i-deep,红色部分满足a[j]+j=deep+j;

(垂直向为i,其横坐标为a[i])采用同used一样的思路可以得出利用变量表示

而绿色因为涉及到减法可能负数(C++不支持负下标)统一加20即可

技术分享

 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int ans,n;
int zx[40],fx[40];
int a[15],used[15];
void DFS(int deep){
    if(deep>n){
        ans++;
        if(ans<=3){
            for(int i=1;i<=n;i++)printf("%d ",a[i]);
            printf("\\n");
        }
            return;
    }
    for(int i=1;i<=n;i++){
            if(zx[deep+i]==0 && fx[20+deep-i]==0 && used[i]==0){
                a[deep]=i;
                used[i]=1;
                zx[deep+i]=1;
                fx[20+deep-i]=1;
                DFS(deep+1);
                used[i]=0;
                a[deep]=0;
                zx[deep+i]=0;
                fx[20+deep-i]=0;
            
        }
    }
}

int main(){
    cin>>n;
    DFS(1);
    cout<<ans;
}

 

以上是关于搜索题结题报告的主要内容,如果未能解决你的问题,请参考以下文章

[程序设计与算法]第五周第二题结题报告: Zipper

20155211课程设计个人结题报告

结题报告

创新项目结题报告范文3篇

P1132 数字生成游戏 结题报告

《基于Cortex-M4的ucOS-III的应用》课程设计 结题报告