蓝桥杯方格填数
来源:互联网 发布:汉朝武将官职品级知乎 编辑:程序博客网 时间:2024/05/06 09:23
方格填数
如下的10个格子
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
用深搜的方法先把每个格子放的数字的全排列算出,然后判断哪些是满足题目要求的。
如下的10个格子
(如果显示有问题,也可以参看【图1.jpg】)
填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)
一共有多少种可能的填数方案?
请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
用深搜的方法先把每个格子放的数字的全排列算出,然后判断哪些是满足题目要求的。
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>using namespace std;int flag[3][4];//表示格子能否放数字 int map[3][4];//每个格子放的数字bool visited[10];//深搜标志数组int ans=0;void init()//初始化格子{for(int i=0;i<3;i++){for(int j=0;j<4;j++)flag[i][j]=1;} flag[0][0]=0;flag[2][3]=0;} void solve(){bool kep=true;int dir[8][2]={0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1};for(int i=0;i<3;i++){for(int j=0;j<4;j++){//判断相邻的两个数是否相连 if(!flag[i][j]) continue;for(int m=0;m<8;m++){int x=i+dir[m][0];int y=j+dir[m][1];if(x<0||x>=3||y<0||y>=4||flag[x][y]==0) continue;if(abs(map[x][y]-map[i][j])==1) kep=false;}}}if(kep)ans++;}void dfs(int index){int x,y;x=index/4;y=index%4;if(x==3){solve();return;}if(flag[x][y]){for(int k=0;k<10;k++){if(!visited[k]){visited[k]=true;map[x][y]=k;dfs(index+1);visited[k]=false;}}}elsedfs(index+1);}int main(){init();dfs(0);cout<<ans<<endl;return 0;}
0 0
- 蓝桥杯 方格填数
- 蓝桥杯 方格填数
- 蓝桥杯方格填数
- 蓝桥杯方格填数
- 蓝桥杯-方格填数
- 蓝桥杯--方格填数
- 蓝桥杯方格填数
- 方格填数 蓝桥杯
- 蓝桥杯 方格填数
- 方格填数 蓝桥杯
- 蓝桥杯 方格填数
- 蓝桥杯 方格填数
- 蓝桥杯方格填数DFS
- 蓝桥杯之方格填数
- 方格填数(蓝桥杯)
- 蓝桥杯2016:方格填数
- 蓝桥杯之方格填数
- 蓝桥杯 第七届省赛试题 方格填数
- Android Studio中一些超实用的插件
- 结构体赋值
- java c语言混合编程 jni
- Android 环信之踩过的坑(二)---Java.lang.UnsatisfiedLinkError
- java String 转Json报错 java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntim
- 蓝桥杯方格填数
- linux上安装使用RabbitMQ
- node爬虫案例(经典版)
- Android——Handler机制
- Java实现以字符串某一位置为界,将它之前的部分与之后的部分互换位置
- Java小程序之你画我猜
- [51NOD] 1003 阶乘后面0的数量 [数学]
- 提高C++程序运行效率的10个简单方法
- 一些笔记