HDU 5547 4*4数独 http://acm.split.hdu.edu.cn/status.php

Sample Input

3

****

2341

4123

3214

*243

*312

*421

*134

*41*

**3*

2*41

4*2*

Sample Output

Case #1:

1432

2341

4123

3214

Case #2:

1243

4312

3421

2134

Case #3:

3412

1234

2341

4123

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stack>
#include<math.h>
#include<queue>
using namespace std;
#define INF 0x3f3f3f3f
#define N 8
int g=0;
char a[N][N];
int qq(int x,int y)
{
    for(int i=0; i<4; i++)
    {
        if(a[i][y]==a[x][y]&&x!=i)
            return 0;
        if(a[x][i]==a[x][y]&&y!=i)
            return 0;
    }

    int xx=x,yy=y;
    if(x%2) x--;
    if(y%2) y--;
    for(int i=x; i<=x+1; i++)
    {
        for(int j=y; j<=y+1; j++)
        {
            if(a[i][j]==a[xx][yy]&&(xx!=i&&yy!=j))
                return 0;
        }
    }

    return 1;
}
void q(int ans)
{
    if(g==1) return ;
    if(ans==16)
    {
        for(int i=0; i<4; i++)
        {
            for(int j=0;j<4;j++)
                printf("%c",a[i][j]);
            printf("\n");
        }
        g=1;
        return ;
    }
    int x=ans/4;
    int y=ans%4;
    if(a[x][y]==‘*‘)
    {
        for(int j=1; j<=4; j++)
        {
            a[x][y]=j+‘0‘;
            if(qq(x,y))
            {
                q(ans+1);
            }
            a[x][y]=‘*‘;
        }
    }
    else
        q(ans+1);
}
int main()
{
    int T,t=1;
    scanf("%d",&T);
    while(T--)
    {
        g=0;
        for(int i=0; i<4; i++)
            scanf("%s",a[i]);
        printf("Case #%d:\n",t++);
        q(0);
    }
    return 0;
}
时间: 2024-10-13 01:04:37

HDU 5547 4*4数独 http://acm.split.hdu.edu.cn/status.php的相关文章

HDU 5652 二分加搜索 http://acm.split.hdu.edu.cn/showproblem.php?pid=5652

Problem Description A long time ago there are no himalayas between India and China, the both cultures are frequently exchanged and are kept in sync at that time, but eventually himalayas rise up. With that at first the communation started to reduce a

HDU 1285 确定比赛名次 http://acm.split.hdu.edu.cn/showproblem.php?pid=1285

Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道每场比赛的结果,即P1赢P2,用P1,P2表示,排名时P1在P2之前.现在请你编程序确定排名. Input 输入有若干组,每组中的第一行为二个数N(1<=N<=500),M:其中N表示队伍的个数,M表示接着有M行的输入数据.接下来的M行数据中,每行也有两个整数P1,P2表示

http://acm.split.hdu.edu.cn/showproblem.php?pid=2255

Problem Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子.这可是一件大事,关系到人民的住房问题啊.村里共有n间房间,刚好有n家老百姓,考虑到每家都要有房住(如果有老百姓没房子住的话,容易引起不安定因素),每家必须分配到一间房子且只能得到一间房子.另一方面,村长和另外的村领导希望得到最大的效益,这样村里的机构才会有钱.由于老百姓都比较富裕,他们都能对每一间房子在他们的经济范围内出一定的价格,比如有3间房子,一家老百姓可以对第一间出10

hdu 1292 &quot;下沙野骆驼&quot;ACM夏令营

"下沙野骆驼"ACM夏令营 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 786    Accepted Submission(s): 377 Problem Description 大家都知道,杭电计算机学院为了吸引更多的学生参与到程序设计竞赛中去,从2005年秋天,开始举行月赛,并一直坚持到了现在.事实表明,这项措施的效

HDU 5014 Number Sequence 贪心 2014 ACM/ICPC Asia Regional Xi&#39;an Online

尽可能凑2^x-1 #include <cstdio> #include <cstring> const int N = 100005; int a[N], p[N]; int init(int x) { int cnt = 0; while(x > 1) { x /= 2; cnt ++; } return cnt + 1; } int main() { int n; while(~scanf("%d", &n)){ for(int i = 0;

HDU 5010 Get the Nut(2014 ACM/ICPC Asia Regional Xi&#39;an Online)

思路:广搜, 因为空格加上动物最多只有32个那么对这32个进行编号,就能可以用一个数字来表示状态了,因为只有 ‘P’   'S' 'M' '.' 那么就可以用4进制刚好可以用64位表示. 接下去每次就是模拟了. 注意:  ‘S’ 不是只有一个. 一个东西如果不是'P'在动的话要先判断周围有没有‘P’,有的话要先吃掉      'P'在动的时候如果一个位置周围有多个东西,都要吃掉. #include<iostream> #include<cstdio> #include<alg

随手练——数独 HDU - 5547 坑!坑!坑!

题目链接:HDU-5547 http://acm.hdu.edu.cn/showproblem.php?pid=5547 解题思想:随手练-- 数独 POJ - 2676 (回溯法+DFS) HDU 的这题实在是太坑了,M 数组开成 int 就过不了,改成 char 就过了.对着别人AC的代码,一点点试,到最后才试出来,数组的问题,但是不能理解啊,什么鬼,这也错?? 然后发现题目描述里有一句:Each test case starts with an empty line followed by

搜索----hdu 5547

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5547 数独,保证每一行每一列都有1,2,3,4 还有4 个2 * 2的小方块儿里也必须是1,2,3,4 输入: 3 **** 2341 4123 3214 *243 *312 *421 *134 *41* **3* 2*41 4*2* 输出: Case #1: 1432 2341 4123 3214 Case #2: 1243 4312 3421 2134 Case #3: 3412 1234 23

HDU 1426 Sudoku Killer(数独,划分区域是关键)

Sudoku Killer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6283    Accepted Submission(s): 1981 Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单