[Noip1997] 棋盘问题(2)
题目描述
在N×NN \times NN×N的棋盘上(1≤N≤10)(1≤N≤10)(1≤N≤10),填入1,2,…,N21,2,…,N^21,2,…,N2共N2N^2N2个数,使得任意两个相邻的数之和为素数。
例如:当N=2N=2N=2时,有: 
其相邻数的和为素数的有:
1+2,1+4,4+3,2+31+2,1+4,4+3,2+31+2,1+4,4+3,2+3
当N=4N=4N=4时,一种可以填写的方案如下: 
在这里我们约定:左上角的格子里必须填数字111。
输入输出格式
输入格式:
一个数NNN
输出格式:
如有多种解,则输出第一行、第一列之和为最小的排列方案;若无解,则输出“NO”。
输入输出样例
2
输出样例#2: 复制
1 2
一开始没看到第一行和第一列的和最小,一直以为只用第一列的和最小...
其实都差不多...
就是正常的搜索, 加上一维判断是不是第一列第一行搜完了。
我采取的策略是先搜第一行第一列,然后从(2, 2)点开始搜索。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
#define reg register
inline int read() {
int res=;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch))res=(res<<)+(res<<)+(ch^),ch=getchar();
return res;
} int n;
bool is[*];
int use[];
int a[][]; inline void dfs(int x, int y, int end, int beg)
{
//printf("%d %d\n", x, y);
if (end) {
for (reg int i = ; i <= n ; i ++, puts(""))
for (reg int j = ; j <= n ; j ++)
printf("%d ", a[i][j]);
exit();
}
bool flag = ;
for (reg int i = ; i <= n * n ; i ++)
{
if (use[i]) continue;
if ((x == or is[i+a[x-][y]]) and (y == or is[i+a[x][y-]]))
{
int x1 = x, y1 = y + ;
if (beg) {
if (x == and y >= ) x1 = , y1 = y + ;
if (y == and x >= ) x1 = x + , y1 = ;
if (x == and y == n) x1 = , y1 = ;
}
flag = ;
int tmp = , tmp2 = beg;
if (x == n and y == n) tmp = ;
if (x == n and y == ) tmp2 = , x1 = , y1 = ;
if (!beg and y == n and x != n) x1 = x + , y1 = ;
a[x][y] = i;
use[i] = ;
dfs(x1, y1, tmp, tmp2);
use[i] = ;
a[x][y] = ;
}
}
if (!flag) return ;
} int main()
{
n = read();
if (n == ) return puts("NO"), ;
for (reg int i = ; i <= n * n * ; i ++)
{
for (reg int j = ; j * j <= i ; j ++)
if (i % j == ) {is[i] = ;goto End;}
is[i] = ;
End:;
}
a[][] = ;
use[] = ;
dfs(, , , );
puts("NO");
return ;
}
[Noip1997] 棋盘问题(2)的更多相关文章
- NOIP原题板刷
update 10.11 我可能已经刷完大部分了,可是这篇blog我也不想更了 这个人很懒,做了很多题但是不想写题解,也不想更blog,所以这篇blog又咕咕了. 把从 \(1997-2017\) 近 ...
- 棋盘问题(NOIP1997)
题目链接:棋盘问题 这道题水不水呢?还是很水的,为什么?因为数据太小了.直接算就行了. #include<bits/stdc++.h> using namespace std; int m ...
- TYVJ1035 棋盘覆盖
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 给出一张n*n(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩 ...
- POJ 1321 棋盘问题(dfs)
传送门 棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 38297 Accepted: 18761 Descri ...
- 设计一个自动生成棋盘格子的JS小程序
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- BZOJ1057[ZJOI2007]棋盘制作 [单调栈]
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳. 而我们的 ...
- 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 753 Solved: 444[Submit][Status][Discuss] D ...
- 【ZJOI2007】棋盘制作 BZOJ1057
Description 国 际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方 阵,对应八八六十四卦,黑白对 ...
- Unity手撸2048小游戏——自动生成4*4棋盘
1.新建文件夹,命prefabs,将刚刚做成的Chessman拖入该文件下,做成预制体 2.删除panel下的Chessman 3.在panel下,新建一个空对象,命名为Chessboard,大小设置 ...
随机推荐
- 【学习笔记】第八章 python3核心技术与实践--条件与循环
[第七章]思考题答案,仅供参考:
- [SpringBoot——Web开发(使用Thymeleaf模板引擎)]
[文字只能描述片段信息,具体细节参考代码] https://github.com/HCJ-shadow/SpringBootPlus 引入POM依赖 <properties> <ja ...
- CentOS升级内核方法
查询现在系统的kernel安装包:rpm -qa |grep kernel 删除不用的内核安装包:rpm -e xxx centos 6升级:https://blog.csdn.net/wh21121 ...
- smartbits国产版本minismb – windows 10 用户界面无法正常显示
Minismb测试仪表是复刻smartbits的国产版本,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具测试任何ip网络设备的端口吞吐率,带宽,并发连接数和 ...
- Django-中间件-csrf扩展请求伪造拦截中间件-Django Auth模块使用-效仿 django 中间件配置实现功能插拔式效果-09
目录 昨日补充:将自己写的 login_auth 装饰装在 CBV 上 django 中间件 django 请求生命周期 ***** 默认中间件及其大概方法组成 中间件的执行顺序 自定义中间件探究不同 ...
- Spark Streaming 入门
概述 什么是 Spark Streaming? Spark Streaming is an extension of the core Spark API that enables scalable, ...
- SpringBootSecurity学习(06)网页版登录方法级别的权限
用户授权 前面讨论过,Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.前面介绍了登录,下面简单 ...
- redis-计数信号量
1.基本概念 2.信号量类 3.测试类 4.测试日志 基本概念 计数信号量是一种锁,它可以让用户限制一项资源最多能够同时被多少个进程访问, 技术信号量和其他锁的区别:当客户端获取锁失败时,客户端会选择 ...
- 【SQL server基础】object_id()函数
在SQLServer数据库中,如果查询数据库中是否存在指定名称的索引或者外键约束等,经常会用到object_id('name','type')方法,做笔记如下: ? 语法:object_id('obj ...
- .NET Core 3.0 可卸载程序集原理简析
因为最近在群里被问到如何理解 .NET Core 3.0 可卸载程序集,所以就写了这篇简单的分析. 因为时间实在很少,这篇文章只简单的罗列了相关的代码,请配合官方说明文档理解. 另外,书籍<.N ...