码迷,mamicode.com
首页 > 其他好文 > 详细

搜索----hdu 5547

时间:2016-08-04 21:30:24      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

题目链接 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
2341
4123
#include<stdio.h>  
#include<string.h>  
using namespace std;  
char a[100][100];  
int panduan(int row,int col)  
{  
    for(int i=0;i<4;i++)  
    {  
        if(a[row][i]==a[row][col]&&i!=col)  
        return 0;  
    }  ///判断该数字是否可以存在这一行里
    for(int i=0;i<4;i++)  
    {  
        if(a[i][col]==a[row][col]&&i!=row)  
        return 0;  
    }  ///判断该数字是否可以存在这一列里
    int mrow=row;  
    int mcol=col;  
    if(row%2==1)row-=1;  
    if(col%2==1)col-=1;  
    for(int i=row;i<=row+1;i++)  
    {  
        for(int j=col;j<=col+1;j++)  
        {  
            {  
                if(a[i][j]==a[mrow][mcol]&&i!=mrow&&j!=mcol)return 0;  
            }  
        }  
    }  ///判断2*2的小方框里是不是1,2,3,4
    return 1;  
}  
void dfs(int cur)  
{  
    
    if(cur==4*4)///如果到达最后一个点则输出全部
    {  
        for(int i=0;i<4;i++)  
        {  
            for(int j=0;j<4;j++)  
            {  
                printf("%c",a[i][j]);  
            }  
            printf("\n");  
        }  
        return ;  
    }  
    int row=cur/4;///
    int col=cur%4;  ///
    if(a[row][col]==*)  
    {  
        for(int j=1;j<=4;j++)  ///吧1,2,3,4每个数都试一遍
        {  
            a[row][col]=j+0;  
            if(panduan(row,col)==1)  ///符合条件则进入下一个点
            {  
                dfs(cur+1);  
            }  
            a[row][col]=*;  ///取消标记
        }  
    }  
    else  
    {  
        dfs(cur+1);  
    }  
}  
int main()  
{  
    int kase=0;  
    int t;  
    scanf("%d",&t);  
    while(t--)  
    {  
        for(int i=0;i<4;i++)  
        {  
            scanf("%s",a[i]);  
        }  
        printf("Case #%d:\n",++kase);  
        dfs(0);  
    }  
    return 0;  
}  

 

搜索----hdu 5547

标签:

原文地址:http://www.cnblogs.com/biu-biu-biu-/p/5738337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!