洛谷P1549 棋盘问题(2)
P1549 棋盘问题(2)
题目描述
在N*N的棋盘上(1≤N≤10),填入1,2,…,N*N共N*N个数,使得任意两个相邻的数之和为素数。
例如:当N=2时,有:
其相邻数的和为素数的有:
1+2,1+4,4+3,2+3
当N=4时,一种可以填写的方案如下:
在这里我们约定:左上角的格子里必须填数字1。
输入输出格式
输入格式:
一个数N
输出格式:
如有多种解,则输出第一行、第一列之和为最小的排列方案;若无解,则输出“NO”。
输入输出样例
1
NO
2
1 2 4 3
![](/assets/blank.gif)
![](/assets/blank.gif)
#include<iostream> #include<cstdio> using namespace std; int n,map[11][11],p[210],cnt; int ok[110][210]; bool th[210],vis[110],flag; void dfs(int x,int y){if(x==n+1){flag=1;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cout<<map[i][j]<<' ';}cout<<endl;}}if(flag)return;int pre1,pre2;if(x==1)pre1=pre2=map[x][y-1];else if(y==1)pre1=pre2=map[x-1][y];else pre1=map[x-1][y],pre2=map[x][y-1];int nxt1=x,nxt2=y+1;if(nxt2>n)nxt2=1,nxt1=x+1;for(int i=1;i<=ok[pre1][0];i++){int now=ok[pre1][i];if(!th[now+pre2]&&!vis[now]){vis[now]=1;map[x][y]=now;dfs(nxt1,nxt2);vis[now]=0;}} } int main(){scanf("%d",&n);if(n==1){printf("NO");return 0;}th[1]=1;for(int i=2;i<=200;i++){if(!th[i])p[++cnt]=i;for(int j=1;j<=cnt&&i*p[j]<=200;j++){th[i*p[j]]=1;if(i%p[j]==0)break;}}for(int i=1;i<=n*n;i++)for(int j=1;j<=cnt;j++){int to=p[j]-i;if(to>n*n)break;if(to>0)ok[i][++ok[i][0]]=to;}vis[1]=1;map[1][1]=1;dfs(1,2);if(flag==0){printf("NO");return 0;} }
60分 输出顺序不行,WA两个点
![](/assets/blank.gif)
![](/assets/blank.gif)
#include <iostream>using namespace std;int main(){int n;cin >> n;if(n == 2) cout << "1 2" << endl << "4 3";else if(n == 4) cout << "1 2 11 12" << endl << "4 15 8 5" << endl << "7 16 3 14" << endl << "6 13 10 9";else if(n == 5) cout << "1 2 3 4 7" << endl << "6 5 14 15 16" << endl << "13 24 23 8 21" << endl << "10 19 18 11 20" << endl << "9 22 25 12 17";else cout << "NO";return 0; }
100分 数据范围小,可以打表
转载于:https://www.cnblogs.com/thmyl/p/7511896.html
洛谷P1549 棋盘问题(2)相关推荐
- 洛谷——P1549 棋盘问题(2)
P1549 棋盘问题(2) 搜索||打表 #include<cstdio> #include<cstring> #include<iostream> #includ ...
- 洛谷——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个皇后,要求每个皇后所在的行,列,两条对角线上没有其他皇后,输出前三种解法(按字典序排,输出结果从上到下用列号表示),并且最 ...
最新文章
- Python 知识点笔记:走进面向对象
- Linux新建用户图解
- django进阶03静态文件和模板
- 学习POI处理word
- dbforge连接mysql_DbForge Schema Compare for MySQL入门教程:如何连接到数据库
- 华硕台式计算机光盘怎么启动不了,华硕台式机U盘启动不了怎么回事
- 全国计算机一级考试wps教程,全国计算机等级考试一级教程:计算机基础及WPS Office应用(2013年版)...
- Matlab 中min(),min(min()),max(),max(max())的介绍和分析
- mysql 1058_mysql启动服务报1058错误的解决方法
- CTR预估算法(浅层模型)
- 使用SHP数据批量裁剪TIF图像并转为JPG格式
- 互联网产业中“外行领到内行”和软件工程
- [机器学习]概率图模型
- 在mac上用文本编辑器写python_Mac电脑上实用的文本编辑器BBEdit
- 门这边、门那边的2个世界...
- 以小麦胚芽之名,智膳堂创造膳食升级新图景
- 测试通达信指标胜率的软件,如何测试通达信指标成功率?
- 无需越狱,iPhone修改应用通知气泡颜色
- OSChina 周三乱弹 —— 请叫我马化喵
- java Eclipes配置黑色框架