[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,大小设置 ...
随机推荐
- 解决python -m pip install --upgrade pip 升级不成功问题
1.使用命令出现. You are , however version is available. You should consider upgrading via the 'python -m p ...
- MySQL实现Oracle rank()排序
一.Oracle写法介绍 MySQL5.7版本没有提供类似Oracle的分析函数,比如开窗函数over(...),oracle开窗函数over(...)使用的话一般是和order.partition ...
- Cookie的删除
1.设置一个Cookie,与要删除的Cookie同名,并将有效时间设置为0: protected void doGet(HttpServletRequest request, HttpServletR ...
- MySQL 8.0主从(Master-Slave)配置
版权声明:转载请注明出处,谢谢配合. https://blog.csdn.net/zyhlwzy/article/details/80569422 MySQL 主从复制的方式有多种,本文主要演示基于基 ...
- Git同步更新操作GitHub和码云仓库上面的代码
一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...
- 2018年蓝桥杯java b组第四题
标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机.各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许 ...
- Android Studio [登陆界面]
EdittextActivity.class package com.xdw.a122; import android.support.v7.app.AppCompatActivity; import ...
- 基于Linux系统--web环境搭建
上线部署文档 数据库部分1.下载Mysql服务 #yum install mysql-server 2.更改 /etc/my.cnf 3.启动Mysql ...
- Python的未来发展方向
Python是一种跨平台的计算机程序设计语言. 是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. ...
- Spring MVC-从零开始-view-向页面传递data(ModelAndView)
1.applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...