蓝桥杯省赛 方格填数C/C++

来源:互联网 发布:windows错误1503 编辑:程序博客网 时间:2024/05/21 09:39

方格填数

如下的10个格子
+–+–+–+
| | | |
+–+–+–+–+
| | | | |
+–+–+–+–+
| | | |
+–+–+–+

(如果显示有问题,也可以参看【图1.jpg】)

填入0~9的数字。要求:连续的两个数字不能相邻。
(左右、上下、对角都算相邻)

一共有多少种可能的填数方案?

请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

DFS,不多说,下面是代码。#include <stdio.h>#include <string.h>#include <math.h>int map[3][4];int visited[10];int method=0;int cheak(int x,int y)/*只需要判断比当前位置小的地方是否相邻就行*/{    for(int i=-1;i<=0;i++)    {        for(int j=-1;j<=1;j++)        {            if((i==0&&j==0)||(i==0&&j==1))            continue;            else if(x+j<0||y+i<0||x+j>3)            continue;            if(fabs(map[y][x]-map[y+i][x+j])==1)            return 0;        }    }    return 1;} void dfs(int sev){    if(sev>=10)    {        method++;        return;    }    int x=(sev+1)%4;    int y=(sev+1)/4;    for(int i=0;i<10;i++)    {        if(visited[i]==0)        {            visited[i]=1;            map[y][x]=i;            if(cheak(x,y)==0)            {                visited[i]=0;                continue;            }            else            {                dfs(sev+1);                visited[i]=0;            }        }    }}int main(){    map[0][0]=-2;    map[2][3]=-2;    dfs(0);    printf("%d\n",method);    return 0;}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝上新开店铺怎么办 鱼侧身躺快死掉怎么办 淘宝店永久封了怎么办 苹果手机ld被黑怎么办 故意点餐给差评怎么办 卖家给我差评怎么办 淘宝卖家威胁我怎么办 淘宝被恶意差评怎么办 淘宝买家给差评怎么办 淘宝c店铺评分低怎么办 淘宝刚开店没信誉怎么办 被淘宝举报盗图怎么办 被起诉人没钱还怎么办 拍拍贷贷款逾期了怎么办 拍拍贷借钱不还怎么办 拍拍贷逾期不还怎么办 天猫贷款还不了怎么办 淘宝店铺降权了怎么办 京东白条违约了怎么办 信用卡多存了钱怎么办 欠贷款还不起了怎么办 还不起房贷房子怎么办 商铺按揭还不了怎么办 捷信欠款 2年怎么办 老板欠工资跑路怎么办 小老板不给工资怎么办 网购收到空包裹怎么办 临时额度调低了怎么办 花呗额度为负数怎么办 淘宝发货发多了怎么办 淘宝寄错地址了怎么办 淘宝里没有淘龄怎么办 支付宝不能充值怎么办 玛瑙湾理财跑路怎么办 淘宝扣12分以后怎么办 美团账号忘记了怎么办 在淘宝上开店货源怎么办 手机版2k18闪退怎么办 电脑看视频太卡怎么办 廉租房摇不到号怎么办 微信号被限制了怎么办