洛谷——P1549 棋盘问题(2)
P1549 棋盘问题(2)
搜索||打表
#include<cstdio> #include<cstring> #include<iostream> #include<cstring> #include<cmath> #include<cstdlib>using namespace std;int n,p[105][105],an[11][11],hang,lie,ans[11][11]; bool vi[105];void print(){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)printf("%d ",ans[i][j]);puts("");} }void scz(){int han=0,li=0;for(int i=1;i<=n;i++) han+=an[1][i],li+=an[i][1];if(han>hang||li>lie) return;hang=han,lie=li;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)ans[i][j]=an[i][j]; }void dfs(int x,int y){if(y==n+1){int sum=0;if(x==1&&hang!=1010010) {for(int i=1;i<=n;i++) sum+=an[1][i];if(sum>hang) return;hang=sum;}x++,y=1;}if(x==n+1&&y==1) {scz();print();exit(0);return;}if(y==2&&x==n&&lie!=1010010){int sum=0;for(int i=1;i<=n;i++) sum+=an[i][1];if(sum>lie) return;lie=sum;}if(x==1||y==1){for(int i=1;i<=n*n;i++){if(vi[i]) continue;int z=an[x][y-1],s=an[x-1][y];if(z&&!p[z][i]) continue;if(s&&!p[s][i]) continue;an[x][y]=i;vi[i]=1;dfs(x,y+1);an[x][y]=0;vi[i]=0;}}else {for(int i=n*n;i>=1;i--){if(vi[i]) continue;int z=an[x][y-1],s=an[x-1][y];if(z&&!p[z][i]) continue;if(s&&!p[s][i]) continue;an[x][y]=i;vi[i]=1;dfs(x,y+1);an[x][y]=0;vi[i]=0;}} }bool tp(int x){for(int i=2;i<=sqrt(x);i++) if(x%i==0) return false;return true; }void yu(){for(int i=1;i<=n*n;i++){for(int j=1;j<=n*n;j++){if(tp(i+j)) p[i][j]=1;} } }int main() {scanf("%d",&n);if(n==1) printf("NO\n");else{hang=lie=1010010;yu();vi[1]=1;an[1][1]=1;dfs(1,2);if(hang==1010010) cout<<"NO\n";else print();}return 0; }
转载于:https://www.cnblogs.com/song-/p/9669106.html
洛谷——P1549 棋盘问题(2)相关推荐
- 洛谷——P1548 棋盘问题
https://www.luogu.org/problem/show?pid=1548#sub 题目描述 设有一个N*M方格的棋盘(l<=N<=100,1<=M<=100)(3 ...
- 洛谷-P1169 棋盘制作(悬线法)
国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个 8 × 8 8×8 8×8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳 ...
- 洛谷P1169 棋盘制作(悬线法)
题目链接:https://www.luogu.org/problemnew/show/P1169 #include<bits/stdc++.h> #define fi first #def ...
- 洛谷P1006 传纸条 (棋盘dp)
好气,在洛谷上交就过了,在caioj上交就只有40分 之前在51nod做过这道题了. https://blog.csdn.net/qq_34416123/article/details/8180902 ...
- 洛谷 P1219 八皇后
P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...
- 洛谷——P1219 八皇后
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷 P1219 八皇后题解
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 洛谷 P1219 ---- 八皇后
题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...
- 【洛谷】普及练习场 深度优先搜索【易】
P1219 八皇后 题目大意: 给出一个n*n的正方形棋盘,在上棋盘上放下n个皇后,要求每个皇后所在的行,列,两条对角线上没有其他皇后,输出前三种解法(按字典序排,输出结果从上到下用列号表示),并且最 ...
最新文章
- 在ssd中显示map tensorflow代码_PyTorch 1.3重磅发布,又要和TensorFlow搞事情了
- map语法获取index_MySQL SQL语法优化——使用Explain查看执行计划
- 软文推荐:常用 Java 静态代码分析工具的分析与比较
- [转]那些相见恨晚的 JavaScript 技巧
- 阿里十年经验等于零!
- linux 配置用户密码,Linux ——用户密码相关设置
- Android FrameWork——ActivityManager框架
- Redis(三)源source编译
- Java课设对对碰_java实现对对碰小游戏
- 百度官方wormHole后门检测记录(转)
- 谷歌google浏览器升级后发生个人资料错误 发送反馈解决方法
- [译]C++17,使用 string_view 来避免复制
- 目标检测学习笔记-3D摄像头与 2D摄像头区别
- 技术实力雄厚的新公链Aergo带你看应用落地
- 所有的自卑,可能都源于这个惯性思维
- iOS开发特殊日期灰色界面的实现
- 【算法详解】splay的初步了解
- php导入表格 出错,PHPExcel导入数据出现问题
- 《如懿传》《延禧攻略》同获金骨朵网络影视盛典奖项
- 2017年武汉大学信息管理学院全日制硕士研究生复试结果公示