蓝桥杯第七届个人赛方格填数
来源:互联网 发布:ssh的端口号 编辑:程序博客网 时间:2024/06/07 17:33
方格填数
如下的10个格子
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
#include<stdio.h>#include<string.h>int visit[10]; int a[3][4];//矩阵3行4列 int map[3][4];//填数 int ans=0;//计数 void judge() { int dir[8][2]= {{0, 1}, {0, -1}, {1, 0}, {-1, 0}, {1, 1}, {1, -1}, {-1, 1}, {-1, -1}}; //8个方向向量 int i,j,k,x,y; int flag=1; for(i=0;i<3;i++) for(j=0;j<4;j++) { if(a[i][j]==0) continue; for(k=0;k<8;k++) { x=i+dir[k][0]; y=j+dir[k][1]; if(x < 0||x > 2||y<0||y>3||a[x][y]==0) continue; if(map[i][j]-map[x][y]==1) flag=0; } }if(flag!=0)ans++;return; } //深搜 void dfs(int n) { int i,x,y; x=n/4;//获得所在行 y=n%4;//获得所在列 if(x==2&&y==3) judge();if(a[x][y]!=0) //如果当前位置可填入数字for(i=0;i<10;i++){if(visit[i]==0){visit[i]=1;map[x][y]=i;dfs(n+1);visit[i]=0;} } else//当前位置不可填 dfs(n+1);return; } int main() { memset(map,0,sizeof(map));memset(visit,0,sizeof(visit));memset(a,1,sizeof(a)); a[0][0]=0; a[2][3]=0;dfs(0);printf("%d\n",ans);return 0; }答案:1580
0 0
- 蓝桥杯第七届个人赛方格填数
- 蓝桥杯第七届方格填数
- 蓝桥杯第七届 方格填数(dfs)
- 蓝桥杯-第七届Java语言B组-方格填数
- 蓝桥杯 第七届JavaB组真题 方格填数
- 蓝桥杯 第七届省赛试题 方格填数
- 第七届蓝桥杯 方格填数
- 第七届C/C++B-方格填数 DFS
- 蓝桥杯-第七届省赛javaB组-方格填数
- 第七届蓝桥杯【省赛试题6】方格填数
- 蓝桥杯 方格填数
- 蓝桥杯 方格填数
- 蓝桥杯方格填数
- 蓝桥杯方格填数
- 蓝桥杯-方格填数
- 蓝桥杯--方格填数
- 蓝桥杯方格填数
- 方格填数 蓝桥杯
- django-关于manage.py migrate无效的问题
- 根据所给文档生成字典
- 1.转换成3NF的保持函数依赖的分解
- spring mvc not returning json content
- 考虑用静态工厂方法代替构造器
- 蓝桥杯第七届个人赛方格填数
- 揭开全景相机的创业真相
- C/C++学习路线图
- 在Ubutu12.04上构建apache2服务器
- rails数据交互(4)
- Eclipse中项目面板字体的修改
- uCOS II
- 【练习】从一组数字中找出最大的几个,用堆完成
- spring IOC 反射加载demo