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:

1
输出样例#1:

NO
输入样例#2:

2
输出样例#2:

1 2
4 3
#include<iostream>
#include<cstdio>
using namespace std;
int n,map[][],p[],cnt;
int ok[][];
bool th[],vis[],flag;
void dfs(int x,int y){
if(x==n+){
flag=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
cout<<map[i][j]<<' ';
}cout<<endl;
}
}
if(flag)return;
int pre1,pre2;
if(x==)pre1=pre2=map[x][y-];
else if(y==)pre1=pre2=map[x-][y];
else pre1=map[x-][y],pre2=map[x][y-];
int nxt1=x,nxt2=y+;
if(nxt2>n)nxt2=,nxt1=x+;
for(int i=;i<=ok[pre1][];i++){
int now=ok[pre1][i];
if(!th[now+pre2]&&!vis[now]){
vis[now]=;
map[x][y]=now;
dfs(nxt1,nxt2);
vis[now]=;
}
}
}
int main(){
scanf("%d",&n);
if(n==){
printf("NO");
return ;
}
th[]=;
for(int i=;i<=;i++){
if(!th[i])p[++cnt]=i;
for(int j=;j<=cnt&&i*p[j]<=;j++){
th[i*p[j]]=;
if(i%p[j]==)break;
}
}
for(int i=;i<=n*n;i++)
for(int j=;j<=cnt;j++){
int to=p[j]-i;
if(to>n*n)break;
if(to>)ok[i][++ok[i][]]=to;
}
vis[]=;
map[][]=;
dfs(,);
if(flag==){
printf("NO");
return ;
}
}

60分 输出顺序不行,WA两个点

#include <iostream>

using namespace std;

int main(){
int n;
cin >> n;
if(n == ) cout << "1 2" << endl << "4 3";
else if(n == ) cout << "1 2 11 12" << endl << "4 15 8 5" << endl << "7 16 3 14" << endl << "6 13 10 9";
else if(n == ) 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 ;
}

100分 数据范围小,可以打表

洛谷P1549 棋盘问题(2)的更多相关文章

  1. 洛谷——P1549 棋盘问题(2)

    P1549 棋盘问题(2) 搜索||打表 #include<cstdio> #include<cstring> #include<iostream> #includ ...

  2. 2017普及组D1T3 洛谷P3956 棋盘

    2017普及组D1T3 洛谷P3956 棋盘 原题 题目描述 有一个m×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在 ...

  3. 洛谷 P3956 棋盘 解题报告

    P3956 棋盘 题目描述 有一个\(m×m\)的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能 ...

  4. 洛谷P1436 棋盘分割

    洛谷题目链接 动态规划: 我们设状态$f[i][j][o][p][k]$表示一个矩形,左上角顶点坐标为$(i,j)$,右下角顶点坐标为$(o,p)$时分割了$k$次,也就是说现在是$k+1$块 我们考 ...

  5. 洛谷 P1436 棋盘分割 解题报告

    P1436 棋盘分割 题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的两部分中的任意一块继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共 ...

  6. 洛谷 P1548 棋盘问题

    题目描述 设有一个N*M方格的棋盘(l<=N<=100,1<=M<=100)(30%) 求出该棋盘中包含有多少个正方形.多少个长方形(不包括正方形). 例如:当 N=2, M= ...

  7. 洛谷——P1548 棋盘问题

    https://www.luogu.org/problem/show?pid=1548#sub 题目描述 设有一个N*M方格的棋盘(l<=N<=100,1<=M<=100)(3 ...

  8. 洛谷 P3956 棋盘

    题目描述 有一个m ×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你所站在的位置必须是有颜色的(不能是无色的), 你只能向上 ...

  9. 洛谷P1169 棋盘制作(悬线法)

    题目链接:https://www.luogu.org/problemnew/show/P1169 #include<bits/stdc++.h> #define fi first #def ...

随机推荐

  1. 【windows】如何让一个程序开机自启动

    windows的开机自启动也是将一个程序放在文件夹下即可,将应用程序或者快捷方式放在如下文件夹下,即可实现开机自启动 C:\ProgramData\Microsoft\Windows\Start Me ...

  2. 【总结】性能调优:JVM内存调优相关文章

    [总结]性能调优:JVM内存诊断工具 [总结]性能调优:CPU消耗分析 [总结]性能调优:消耗分析 JVM性能调优

  3. C++函数模板的显示调用与隐式调用

    C++函数模板可以显示调用与可以隐式调用 首先定义函数模板: template <class T> inline const T& c_max (const T& a, c ...

  4. pkg-config设置

    pkg-config在一些源码管理中会被使用到. 介绍 上网查资料,知道了pkg-config这个东西,下面简单介绍一下. pkg-config提供了下面几个功能: 检查库的版本号.如果所需要的库的版 ...

  5. Cannot load JDBC driver class 'com.mysql.jdbc.Driver '

    最近在学JAVA, SSM, 照着网上的例子系统启动后总是报这个错(IDE :IEDA): HTTP Status 500 - Request processing failed; nested ex ...

  6. Contiki 2.7 Makefile 文件(五)

    4.第四部分 (1) oname = ${patsubst %.c,%.o,${patsubst %.S,%.o,$(1)}} 自定义函数,$(1)表示调用oname这个函数的第一个参数,patsub ...

  7. Java内部类复习

    package com.t_06; import org.junit.Test; import com.t_06.StaticClass.StaticInnerClass; /** * 一个类的定义放 ...

  8. Java丨springMVC + Ajax 来进行分页

    javaweb 分页技术 实现的方式有很多种,但是小编在网上问了度娘也问了谷老师,得到的答案让小编我不是很满意,so,还是自己写吧! 在小编的博文中,小编不会上传源码,只会把重要的代码和思路供大家参考 ...

  9. POJ3468 A Simple Problem with Integers(数状数组||区间修改的RMQ问题)

    You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of op ...

  10. 1139 First Contact(30 分)

    Unlike in nowadays, the way that boys and girls expressing their feelings of love was quite subtle i ...