数独游戏
来源:互联网 发布:中国云计算学术大会 编辑:程序博客网 时间:2024/05/22 14:54
描述:
数独游戏规则
在9阶方阵中,包含了81个小格(九列九行),其中又再分成九个小正方形(称为宫),每宫有九小格。
游戏刚开始时,盘面上有些小格已经填了数字(称为初盘),游戏者要在空白的小格中填入1到9的数字,
使得最后每行、每列、每宫都不出现重复的数字,而且每一个游戏都只有一个唯一的解答(称为终盘)。
输入:
一个9*9的矩阵,0表示该位置是空白。
输出:
一个9*9的矩阵,格式与输入类似。
输入样例:
900050060020070100300102040703800529000345000516009403050208006007090010030010004
输出样例:
971453268428976135365182947743861529892345671516729483154238796687594312239617854
#include<iostream>
using namespace std;
int a[9][9];int num[9];
int complace(int c,int d);void shuru();void search(int m);void output();
int main(){ shuru(); search(0); return 0;
}void shuru(){ int i,j; for(i=0;i<9;i++) { cin>>num[i]; } for(i=0;i<9;i++) { for(j=8;j>=0;j--) { a[i][j]=num[i]%10; num[i]=num[i]/10; } }}void search(int m){ int i; if(m==81) { output();
} else if(a[m/9][m%9]!=0) { search(m+1); } else { for(i=1;i<=9;i++) { if(complace(m,i)==1) { a[m/9][m%9]=i; search(m+1); }
} a[m/9][m%9]=0; }}int complace(int c,int d) { int flag; int i,j; flag=1; for(i=0;i<9;i++) { if(a[i][c%9]==d) { flag=0; break; }
} for(i=0;i<9;i++) { if(a[c/9][i]==d) { flag=0; break; } } for(i=(c/9)/3*3;i<(c/9)/3*3+3;i++) { for(j=(c%9)/3*3;j<(c%9)/3*3+3;j++) if(a[i][j]==d) { flag=0; return 0; } } return (flag);
}void output(){ int i,j; for(i=0;i<9;i++) { for(j=0;j<9;j++) { cout<<a[i][j]; } cout<<endl; } }
- 数独游戏求解
- 数独游戏
- 数独游戏
- 数独游戏破解
- 数独游戏程序
- 数独游戏
- 数独游戏
- 数独游戏
- 数独游戏
- 数独游戏新篇章
- 数独游戏
- 数独游戏
- 数独游戏
- 数独游戏开发
- 数独游戏
- 数独游戏
- noj1202数独游戏
- python 数独游戏
- 使用flidder自动保存监控手机APP的请求与响应
- 关于uimage,zimage,mkimage等问…
- 虚拟串口软件的简单使用
- Linux下cvs详细安装和配置
- arm-linux-gcc未找到命令
- 数独游戏
- /opt/4.3.3/bin/../arm-none-linux…
- TQ2440成功移植linux-2.6.29…
- (*(volatile unsigned long *)详解
- 线程(一)——入门
- tiny64103G模块拨号问题
- 基于OK6410的u-boot2010.03…
- 嵌入式linux的tftp安装配置
- 更改嵌入式Linux中开机画面