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)相关推荐

  1. 洛谷——P1548 棋盘问题

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

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

    国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个 8 × 8 8×8 8×8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳 ...

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

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

  4. 洛谷P1006 传纸条 (棋盘dp)

    好气,在洛谷上交就过了,在caioj上交就只有40分 之前在51nod做过这道题了. https://blog.csdn.net/qq_34416123/article/details/8180902 ...

  5. 洛谷 P1219 八皇后

    P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...

  6. 洛谷——P1219 八皇后

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  7. 洛谷 P1219 八皇后题解

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  8. 洛谷 P1219 ---- 八皇后

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  9. 【洛谷】普及练习场 深度优先搜索【易】

    P1219 八皇后 题目大意: 给出一个n*n的正方形棋盘,在上棋盘上放下n个皇后,要求每个皇后所在的行,列,两条对角线上没有其他皇后,输出前三种解法(按字典序排,输出结果从上到下用列号表示),并且最 ...

最新文章

  1. 在ssd中显示map tensorflow代码_PyTorch 1.3重磅发布,又要和TensorFlow搞事情了
  2. map语法获取index_MySQL SQL语法优化——使用Explain查看执行计划
  3. 软文推荐:常用 Java 静态代码分析工具的分析与比较
  4. [转]那些相见恨晚的 JavaScript 技巧
  5. 阿里十年经验等于零!
  6. linux 配置用户密码,Linux ——用户密码相关设置
  7. Android FrameWork——ActivityManager框架
  8. Redis(三)源source编译
  9. Java课设对对碰_java实现对对碰小游戏
  10. 百度官方wormHole后门检测记录(转)
  11. 谷歌google浏览器升级后发生个人资料错误 发送反馈解决方法
  12. [译]C++17,使用 string_view 来避免复制
  13. 目标检测学习笔记-3D摄像头与 2D摄像头区别
  14. 技术实力雄厚的新公链Aergo带你看应用落地
  15. 所有的自卑,可能都源于这个惯性思维
  16. iOS开发特殊日期灰色界面的实现
  17. 【算法详解】splay的初步了解
  18. php导入表格 出错,PHPExcel导入数据出现问题
  19. 《如懿传》《延禧攻略》同获金骨朵网络影视盛典奖项
  20. 2017年武汉大学信息管理学院全日制硕士研究生复试结果公示

热门文章

  1. IntelliJ IDEA删除所有断点
  2. redis和memcache的区别
  3. linux三剑客及正则表达(grep,sed,awk)
  4. 非常有用的User case用例描述模板
  5. Spring Cache 缺陷,我好像有解决方案了
  6. 2020年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
  7. 7年半老程序员,被现实击垮……
  8. Spring 中策略模式的 2 个经典应用,可以用来怼面试官了
  9. 农村黑产,才是真正的硬核朋克!
  10. Kubernetes 2018 年度简史