博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO 1.5.4 Checker Challenge
阅读量:4639 次
发布时间:2019-06-09

本文共 1356 字,大约阅读时间需要 4 分钟。

题意:经典的八皇后问题

解法:

采用朴素的每一次放置都与前面的所有行进行比较,在N =13的时候时间会爆掉

《入门经典》上提供的方法很经典,vis数组的使用,具体见《入门经典》125页

/*ID:lsswxr1PROG:checkerLANG:C++*/#include
#include
#include
#include
using namespace std;#define maxn 15ifstream fin("checker.in");ofstream fout("checker.out");int N, tot;int outputNums;int curPuts[maxn];int vis[30][30];void dfs(int cur){ if (cur == N) { tot++; outputNums++; if (outputNums > 3) { return; } for (int i = 0; i < N; i++) { if (i == 0) { fout << curPuts[i] + 1; } else { fout << " " << curPuts[i] + 1; } } fout << endl; return; } for (int i = 0; i < N; i++) { if (!vis[0][i] && !vis[1][cur + i] && !vis[2][cur - i + N]) { curPuts[cur] = i; vis[0][i] = vis[1][cur + i] = vis[2][cur - i + N] = 1; dfs(cur + 1); vis[0][i] = vis[1][cur + i] = vis[2][cur - i + N] = 0; } }}int main(){ fin >> N; tot = 0; memset(vis, 0, sizeof(vis)); memset(curPuts, 0, sizeof(curPuts)); dfs(0); fout << tot << endl; //cout<
<

 

转载于:https://www.cnblogs.com/rayforsure/p/3493322.html

你可能感兴趣的文章
【dp】船
查看>>
oracle, group by, having, where
查看>>
⑥python模块初识、pyc和PyCodeObject
查看>>
object-c中管理文件和目录:NSFileManager使用方法
查看>>
Kibana:分析及可视化日志文件
查看>>
nodejs pm2使用
查看>>
cocos2d-x 3.10 PageView BUG
查看>>
装饰器的基本使用:用户登录
查看>>
CSS选择器总结
查看>>
mysql中sql语句
查看>>
head/tail实现
查看>>
sql语句的各种模糊查询语句
查看>>
vlc 学习网
查看>>
Python20-Day05
查看>>
Real World Haskell 第七章 I/O
查看>>
C#操作OFFICE一(EXCEL)
查看>>
【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
查看>>
ABAP 程序间的调用
查看>>
移动端单屏解决方案
查看>>
web渗透测试基本步骤
查看>>