博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数独~~~~~~只记得当下的眼疼
阅读量:6073 次
发布时间:2019-06-20

本文共 2138 字,大约阅读时间需要 7 分钟。

只记得挡下的强烈( ~不潮不花钱~) , 那个啥 言归正传 , 今晚真是 做的眼疼 , 只记得当下的强烈 , 扣扣扣扣 , 左左左左 偏左就用左手 . 好不容易做出来  结果被  卡死到  输出格式上了 ......

这个题是需要再做一下的

 输出的时候 两组数据之间必须要有一个空行 隔开

 实际上搜索是非常简单的 , 就是跳出去的时机应该好好把握 . 

Hey greedy,don’t fret

What you see is what you get

You name it,I have it

 请你不要到处扣扣

最早的时候  我一直用的都是  两个for循环 遍历 寻找  结果就是  不停错误  ,  ......................先付上修改之后的代码 , 一会在用原来的思想强行实现一波.

1 #include
2 int a[9][9]; 3 int flag; 4 bool check(int y,int x,int mark) 5 { 6 for(int i=0;i<9;i++) 7 { 8 if(a[y][i]==mark) 9 return false;10 if(a[i][x]==mark)11 return false;12 }13 for(int i=(y/3)*3;i<(y/3)*3+3;i++)14 for(int j=(x/3)*3;j<(x/3)*3+3;j++)15 {16 if(a[i][j]==mark)17 return false;18 }19 return true;20 }21 int n;22 void DFS()23 {24 if(n==81)25 {26 return;27 }28 for(int i=n,mark=0;i<=81;i++) // 在 搜索的时候 尽量 少用 for循环 不然到时候 找到合适的条件的时候 不容易跳出来29 {30 31 if(i==81)32 {33 n=81;34 return;35 }36 int y=i/9,x=i%9;37 if(a[y][x]==0)38 {39 for(int i=1;i<=9;i++)40 {41 if(check(y,x,i))42 {43 a[y][x]=i;44 DFS();45 if(n==81)46 {47 i=81;48 break;49 }50 a[y][x]=0;51 }52 if(i==9)53 {54 mark=1;55 }56 }57 if(mark)58 break;59 }60 }61 }62 int main()63 {64 int t;65 scanf("%d",&t);66 while(t--)67 {68 for(int i=0;i<9;i++)69 for(int j=0;j<9;j++)70 scanf("%d",&a[i][j]);71 n=0;72 DFS();73 for(int i=0;i<9;i++)74 {75 for(int j=0;j<9;j++)76 printf("%d ",a[i][j]);77 printf("\n");78 }79 printf("\n");80 }81 return 0;82 }

 

 

 

 

转载于:https://www.cnblogs.com/A-FM/p/5342844.html

你可能感兴趣的文章
Java反射机制
查看>>
从Dinnr失败看产品市场可行性认知有哪些不足
查看>>
我的友情链接
查看>>
电脑开机速度慢怎么办
查看>>
linux编程:getenv,putenv,setenv
查看>>
Spring4-HelloWorld
查看>>
bootstrap-下拉菜单(菜单标题)
查看>>
为什么Redis能这么快
查看>>
Sed实例三
查看>>
第九章:事务
查看>>
用CentOS访问局域网中的Windows共享
查看>>
图层效果及样式
查看>>
【转】11个高效的VS调试技巧
查看>>
MySQL解析器源码分析--对select语句中子查询处理逻辑的分析(二)
查看>>
我的友情链接
查看>>
Js数组随机显示文字,文本随机出现
查看>>
虚拟局域网VLAN与trunk(中继)的原理使用配置。
查看>>
CCNA 学习笔记(八)--交换知识(ACL)
查看>>
Ruby Python Java C C++ 数组使用方法对比
查看>>
openvswitch在rhel61+kvm环境中的使用
查看>>