【ZOJ】2580【搜索】【suduku】

原创 2013年12月03日 11:13:00


Sample Input

1
103000509
002109400
000704000
300502006
060000050
700803004
000401000
009205800
804000107

Sample Output
143628579
572139468
986754231
391542786

468917352
725863914

237481695
619275843
854396127

*******************************************************************************************************************


#include<stdio.h>
struct shu{
    int date;
    int x;
    int y;
} shu[9][9];
int DFS(int i,int j){
    int s,t,m;
    if(j==9){
        j=0;
        i++;
        if(i==9)
            return 1;//全部填满
    }
    while(shu[i][j].date){
        j++;
        if(j==9)
        {
            j=0;
            i++;
            if(i==9)
                return 1;
        }
    }
    for(m=1; m<10; m++){
        for(s=0; s<9; s++){
            if(shu[i][s].date==m)
                break;
            if(shu[s][j].date==m)
                break;
        }
        if(s==9){
            for(s=shu[i][j].x-3; s<shu[i][j].x; s++){
                for(t=shu[i][j].y-3; t<shu[i][j].y; t++)
                    if(m==shu[s][t].date)
                        break;
                if(t<shu[i][j].y)
                    break;
            }
            if(s==shu[i][j].x){
                shu[i][j].date=m;
                if(DFS(i,j+1))//成功
                    return 1;
                shu[i][j].date=0;
            }
        }
    }
    return 0;
}
int main(){
    int n,i,j;
    scanf("%d",&n);
    for(i=0; i<9; i++){
        for(j=0; j<9; j++){
            if(i>=0&& i<3)
                shu[i][j].x=3;
            else if(i>=3 &&i<6)
            shu[i][j].x=6;
            else
                shu[i][j].x=9;
            if(j>=0&& j<3)
                shu[i][j].y=3;
            else if(j>=3 &&j<6)
            shu[i][j].y=6;
            else
                shu[i][j].y=9;
        }
    }
    while(n--){
        for(i=0; i<9; i++){
            getchar();
            for(j=0; j<9; j++)
            {
                scanf("%c",&shu[i][j].date);
                shu[i][j].date-=48;
            }
        }
        DFS(0,0);
        for(i=0; i<9; i++){
            for(j=0; j<9; j++)
                printf("%c",shu[i][j].date+48);
            printf("\n");
        }
    }
    return 0;
}


ZOJ 2580 Sudoku (DFS)

题意的话没什么好说的,一般都玩过数独游戏.大概都了解规则.就是一个数独题目,以数字 0表示空格,要求任意一个正确解. 看到题目想到就是暴力搜索,但是忽略了规模,过于暴力的搜索把所有可能性都...
  • Night__elf
  • Night__elf
  • 2012年12月26日 15:29
  • 252

zoj1091(深度搜索

撒花,简单题刷得差不多了开始刷其他类型的题啦。 第一次接触深度搜索哈哈,有点理解了,题的答案是看网上自己理解敲的,等下敲个广度出来看看。 #include #include u...
  • scnuxiaotao
  • scnuxiaotao
  • 2015年07月28日 13:32
  • 419

trie-洛谷P2580 于是他错误的点名开始了

https://www.luogu.org/problem/show?pid=2580 字典树trie; 感觉所有树里面字典树最好理解了; 但是操作直接到指针; 这个我调了40min; 感觉...
  • largecub233
  • largecub233
  • 2017年03月14日 22:56
  • 249

UVa989 - Su Doku(数独游戏)

In many newspapers we may nd some puzzles to solve, one of those is Su Doku. Given a grid 9  9 wit...
  • wuli2496
  • wuli2496
  • 2014年08月26日 14:11
  • 1272

暑假练习--hdoj--搜索--suduku

这个题必须要写一篇博客了……这个题算是做过的最久的一道题吧。想了很长时间,一直没想好怎么做。要保证每一行每一列还有没个格子都不重复,行和列还好说,每个格子不一样不知道怎么做。搜索的话,开始是想几个方向...
  • sdau164185
  • sdau164185
  • 2017年08月02日 17:52
  • 70

POJ 2243 ZOJ 1091 UVaOJ 439 Knight moves(BFS广度优先搜索)

//典型的BFS(广度优先搜索)//马走日所需最少步数问题#includeusing namespace std;int map[8][8];//记录步数数组int vis[8][8];//访问过的记...
  • ChinaCzy
  • ChinaCzy
  • 2010年02月14日 21:50
  • 852

Suduku

package test; public final class Shudu {     public static int GRID_NUM = 9;     public stati...
  • chencailong
  • chencailong
  • 2013年06月30日 20:40
  • 403

ZOJ 2477 Magic Cube 三阶魔方还原(IDA*)

转载请注明出处,谢谢 http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove 三阶魔方还原。因为只搜5层,...
  • ACM_cxlove
  • ACM_cxlove
  • 2012年07月19日 00:22
  • 3007

ACM-DFS之Sudoku Killer——hdu1426

ACM DFS Sudoku Killer hdu1426
  • lx417147512
  • lx417147512
  • 2014年04月19日 18:19
  • 1443

ZOJ-3261(并查集续路径压缩,灵活应用)

Connections in Galaxy War Time Limit: 3 Seconds      Memory Limit: 32768 KB In order to str...
  • XH413235699
  • XH413235699
  • 2017年04月05日 21:01
  • 172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【ZOJ】2580【搜索】【suduku】
举报原因:
原因补充:

(最多只允许输入30个字)