第七届蓝桥杯省赛6:方格填数
2016-03-25 21:49
323 查看
方格填数
如下的10个格子
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
图1.jpg
next_permutation很好用
如下的10个格子
+--+--+--+
| | | |
+--+--+--+--+
| | | | |
+--+--+--+--+
| | | |
+--+--+--+
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
图1.jpg
next_permutation很好用
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[12]={-2,0,1,2,3,4,5,6,7,8,9,-2}; int dx[8]={1,1,1,0,-1,-1,-1,0}; int dy[8]={-1,0,1,1,1,0,-1,-1}; int res; bool judge() { for(int i=1;i<=10;i++) { int y=i/4; int x=i%4; for(int k=0;k<8;k++) { int ny=y+dy[k]; int nx=x+dx[k]; int j=ny*4+nx; if(0<=ny&&ny<3&&0<=nx&&nx<4) { if(abs(a[j]-a[i])==1) return false; } } } return true; } int main() { do{ if(judge()) res++; }while(next_permutation(a+1,a+11)); printf("%d\n",res); return 0; } /* res:1580 */
相关文章推荐
- 利用lex和yacc做词法、语法分析
- PHP导入Excel和导出数据为Excel文件
- c++第2次实验-学生成绩
- python中的字符串编码
- nodejs 微信中使用file组件上传图片在某些机型上点击无反应
- Leetcode 121. Best Time to Buy and Sell Stock
- 解决ubuntu-14-04中Qt设计师窗口部件工具箱中不能拖拽部件的方法
- CCF 画图
- 网易网考题“9和g”
- 巧用ifstream判断文件是否存在
- 探讨Nodejs中的作用域问题。
- linux(centos)搭建SVN服务器
- WPF学习——依赖项属性(3)
- Java设计模式之“工厂方法模式”
- MapReduce处理多个不同的出入文件
- Windows 7 Ultimate(旗舰版)SP1 32/64位官方原版下载(2011年5月12日更新版)
- ExtJS获取父子、兄弟容器元素方法
- 20145214 《Java程序设计》第4周学习总结
- objective-C学习笔记(九)ARC
- 设置一个虚拟域名使内网其他用户也可以通过虚拟域名访问