这个题自己写的样例能过,但是提交总是output limit exceed。还没想明白到底哪里错了,
走过路过的帮忙看看哪里出问题?
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int a[20][20],n;
int hen[10][10],shu[10][10],kuai[10][10];
struct M
{
int x,y,k;
}s[1300];
int f(int xx,int yy)
{
if(xx>=1&&xx<=3&&yy>=1&&yy<=3)return 1;
else if(xx>=4&&xx<=6&&yy>=1&&yy<=3)return 4;
else if(xx>=7&&xx<=9&&yy>=1&&yy<=3)return 7;
else if(xx>=1&&xx<=3&&yy>=4&&yy<=6)return 2;
else if(xx>=4&&xx<=6&&yy>=4&&yy<=6)return 5;
else if(xx>=7&&xx<=9&&yy>=4&&yy<=6)return 8;
else if(xx>=1&&xx<=3&&yy>=7&&yy<=9)return 3;
else if(xx>=4&&xx<=6&&yy>=7&&yy<=9)return 6;
else if(xx>=7&&xx<=9&&yy>=7&&yy<=9)return 9;
}
int dfs(int nn)
{
int i,j,k,g;
k=0;
if(nn==-1)
{
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
cout<<a[i][j];
}cout<<endl;
}
return 0;
}
else
{
for(i=1;i<=9;i++)
{
if(hen[s[nn].x][i]==1||shu[s[nn].y][i]==1||kuai[s[nn].k][i]==1||a[s[nn].x][s[nn].y]!=0)continue;
if(hen[s[nn].x][i]==0&&shu[s[nn].y][i]==0&&kuai[s[nn].k][i]==0&&a[s[nn].x][s[nn].y]==0)
{
//cout<<s[nn].x<<" "<<s[nn].y<<" "<<i<<" "<<nn<<endl;
a[s[nn].x][s[nn].y]=i;
hen[s[nn].x][i]=1;shu[s[nn].y][i]=1;kuai[s[nn].k][i]=1;
dfs(nn-1);
a[s[nn].x][s[nn].y]=0;
hen[s[nn].x][i]=0;shu[s[nn].y][i]=0;kuai[s[nn].k][i]=0;
}
}
}
return 0;
}
main()
{
int cases,i,j,kk;
scanf("%d",&cases);
char c;
for(int tt=0;tt<cases;tt++)
{
memset(a,0,sizeof(a));
memset(s,0,sizeof(s));
memset(hen,0,sizeof(hen));
memset(shu,0,sizeof(shu));
memset(kuai,0,sizeof(kuai));
n=0;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
cin>>c;
//if(c>='0'&&c<='9')
a[i][j]= c-'0';
kk=f(i,j);
hen[i][a[i][j]]=1;
shu[j][a[i][j]]=1;
kuai[kk][a[i][j]]=1;
if(a[i][j]==0)
{
s[n].k=kk;
s[n].x=i;s[n].y=j;n=n+1;
}
}
}
dfs(n-1);
}
}
分享到:
相关推荐
北大POJ2676-Sudoku 解题报告+AC代码
这是android版的手机sudoku游戏代码
Sudoku Programming with C teaches you how to write computer programs to solve and generate Sudoku puzzles. This is a practical book that will provide you with everything you need to write your own ...
This is a sudoku source file, there are two completed sudoku programs in the file, enjoy it!
这是一篇关于数独游戏算法的文章,希望对喜爱数独游戏的编程朋友有所帮助。英文版 This is an essay of The Mathematics of Sudoku. Hoping this paper is useful for game programmer.
A Sudoku solver implemented in C++. It can solve a given Sudoku problem, or count the possibilities for all valid Sudoku grids.
Excel VBA写的解sudoku的程序。在上面填上残缺数独,点击按钮即可在下方自动生成答案。
数独求解程序-sudoku_new.zip 本帖最后由 213 于 2014-6-8 18:01 编辑 通过递归解数独 sudoku_new.zip 解数独 附件里主要有两个函数 sudoku_r_2.m 是递归程序的主体 ...
本游戏界面简洁,并有如下功能: 1. 按照5级难度自动布局或手工布局,并具有计时功能 2. 具有“下一步”提示,和步骤追踪“回退”功能 3. 能够保存布局和求解进度 4. 可电脑求解“唯一解”和“所有解” ...
android基础教程Sudoku例子,自己手打,可以运行
Sudoku-Sudoku
matlab开发-Sudoku。解决任何难度级别的9x9数独
Sudoku Up 2010,绿色版,打卡即可使用
It is the example of Sudoku solver. It is worked by adding your Sudoku sample into the program and it will help you solve the Sudoku. The Sudoku must be in either easy or medium level.
这个游戏是我自己结合其它资料写的,希望能对大伙有点帮助。
SUDOKU Helper(incompleted)
Solving Sudoku Problem with MATLAB.
基于java的数独游戏,含源代码,简单易懂
数独sudoku:整个矩阵由为9*9的矩阵,矩阵中又分成9个3*3的小矩阵,在每个方格中填入1-9 的数字,必须符合列中无重复数字,行中无重复数字,小矩阵中无重复数字 本游戏介绍: 1、游戏模式 a、练习模式,无计时,...
继上一版android开发Sudoku之后的2.0版,制作简单,讲究实用性