数独游戏
来源:互联网 发布:磐石软件 编辑:程序博客网 时间:2024/05/22 12:25
数独游戏
时限:1000ms 内存限制:10000K 总时限:3000ms
描述:
数独游戏规则
在9阶方阵中,包含了81个小格(九列九行),其中又再分成九个小正方形(称为宫),每宫有九小格。
游戏刚开始时,盘面上有些小格已经填了数字(称为初盘),游戏者要在空白的小格中填入1到9的数字,
使得最后每行、每列、每宫都不出现重复的数字,而且每一个游戏都只有一个唯一的解答(称为终盘)。
输入:
一个9*9的矩阵,0表示该位置是空白。
输出:
一个9*9的矩阵,格式与输入类似。
输入样例:
900050060
020070100
300102040
703800529
000345000
516009403
050208006
007090010
030010004
输出样例:
971453268
428976135
365182947
743861529
892345671
516729483
154238796
687594312
239617854
#include<iostream>using namespace std;void search(int m);int check(int m);void output();int a[9][9];char t[9][9];int main(){ int i,j; for(i=0;i<9;i++)//输入数独 { for(j=0;j<9;j++) { cin>>t[i][j]; } } for(i=0;i<9;i++)//转换为整形 { for(j=0;j<9;j++) { a[i][j]=t[i][j]-'0'; } } search(0); return 0;}void search(int m){ if(m==81)//满足条件,输出 { output(); } else { if(a[m/9][m%9]==0)//此格为空,开始试探 { for(int i=1;i<=9;i++)//逐个试探 { a[m/9][m%9]=i; if(check(m))//满足检查条件,搜索下一格 { search(m+1); a[m/9][m%9]=0;//如果没有一直搜下去,则返回继续试探当前格 } else//不满足条件,继续试探 { a[m/9][m%9]=0; } } } else//此格非空,继续搜索 { search(m+1); } }}int check(int m)//检测{ int i,j; int up,down,left,right; up=m/9/3*3;//框定当前搜索格所在宫 down=up+3; left=m%9/3*3; right=left+3; for(i=0;i<9;i++)//检测横行竖行 { if((a[i][m%9]==a[m/9][m%9]&&i!=m/9)||(a[m/9][i]==a[m/9][m%9]&&i!=m%9)) { return 0; } } for(i=up;i<down;i++)//检测所在宫 { for(j=left;j<right;j++) { if(a[i][j]==a[m/9][m%9]&&i!=m/9&&j!=m%9) { return 0; } } } return 1;}void output()//输出结果{ for(int i=0;i<9;i++) { for(int j=0;j<8;j++) { cout<<a[i][j]; } cout<<a[i][8]<<endl; }}
阅读全文
0 0
- 数独游戏求解
- 数独游戏
- 数独游戏
- 数独游戏破解
- 数独游戏程序
- 数独游戏
- 数独游戏
- 数独游戏
- 数独游戏
- 数独游戏新篇章
- 数独游戏
- 数独游戏
- 数独游戏
- 数独游戏开发
- 数独游戏
- 数独游戏
- noj1202数独游戏
- python 数独游戏
- SQLserver2008全角半角转换
- 代码优化②——阿里巴巴Java开发手册
- 点击空白回收键盘
- 给你不同面值的硬币和总金额target。 写一个函数来计算组成这个数量的组合的数量。
- JS完美运动框架详解——原理分析及demo
- 数独游戏
- [Design Pattern]Observer Pattern
- 长远价值较凸显
- Java集合的总结@2017.11.11-11.12
- 戴尔poweredge 1950的安装 fedora系统小记
- 欢迎使用CSDN-markdown编辑器
- HDFS节点内数据平衡
- HashMap深入理解
- 基于windchill的流程框架设计