随手练——数独 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 4 lines (输入样例里没有空行). 66666666666666666。告辞,我错了。

#include <iostream>
#include <string>
using namespace std;

int M[4][4];
bool flag = false;

int check(int row, int column, int x) {
    for (int i = 0; i < 4; i++) {
        if (M[i][column] == x || M[row][i] == x)
            return 0;
    }
    int r = row / 2 * 2, c = column / 2 * 2;
    for (int i = r; i < r + 2; i++) {
        for (int j = c; j < c + 2; j++) {
            if (M[i][j] == x) return 0;
        }
    }
    return 1;
}

void DFS(int row, int column) {
    if (row == 4) {
        flag = true;
        return;
    }

    if (M[row][column] == -6) {
        int i;
        for (i = 1; i <= 4; i++) {
            if (check(row, column, i)) {
                M[row][column] = i;
                DFS(row + (column + 1) / 4, (column + 1) % 4);
                if (flag) return;
            }
        }
        if (i == 5) {
            M[row][column] = -6;
            return;
        }
    }
    DFS(row + (column + 1) / 4, (column + 1) % 4);
}
int main() {
    int i = 1,n;
    cin >> n;    string s;
    cin.ignore();
    while (n--) {
        flag = false;
        for (int i = 0; i < 4; i++) {
            getline(cin, s);
            if (s.empty()) {
                i--;
                continue;
            }
            for (int j = 0; j < 4; j++) {
                M[i][j] = s[j]-‘0‘;
            }
        }
        DFS(0, 0);
        cout << "Case #" << i++ << ":" << endl;
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                cout << M[i][j];
            }
            cout << endl;
        }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/czc1999/p/10355018.html

时间: 2024-10-12 21:46:49

随手练——数独 HDU - 5547 坑!坑!坑!的相关文章

hdu 5455 Fang Fang 坑题

Fang Fang Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5455 Description Fang Fang says she wants to be remembered.I promise her. We define the sequence F of strings.F0 = ‘‘f",F1 = ‘‘ff",F2 = ‘‘cff",F

云计算之OpenStack实战记(一)与埋坑填坑

一.了解Openstack 1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运行自己的云计算和存储设施.Rackspace与NASA是最初重要的两个贡献者,前者提供了"云文件"平台代码,该平台增强了OpenStack对象存储部分的功能,而后者带来了"Nebula"平台形成了OpenStack其余的部分.而今,OpenStack基金会已经有150多个会员,包括很多知名公司如"Canonical.DEL

云计算之OpenStack实战记(二)与埋坑填坑

3.6 Nova控制节点的部署 创建nova用户,并加入到service项目中,赋予admin权限 [[email protected] ~]# source admin-openrc.sh [[email protected] ~]# openstack user create --domain default --password=nova nova +-----------+----------------------------------+ | Field     | Value   

一些Layout的坑。坑死我自己了

iOS这个东西,初学感觉,还好还好,然后一年之后再来修复一下初学的时候的代码,我只是感觉头很晕- - 别扶我. AutoLayout的坑,明明以前都没有的!!!升了iOS10就突然发现了这个坑,其实也有可能是以前就有,只是没踩到... 正点来了 当以前的我使用StoryBoard制定一系列的约束的时候,感觉屏幕适配都不是问题了! 然后以前的我突发奇想,不行,我要加一个代码控件,但是以前的我哪知道AutoLayout这个东西啊. 然后,就手写了个TextView,然后frame:CGRectMak

Flexbox微信踩坑填坑记

Flexbox的大名很早就有了解过,只是之前一直是开发PC端的页面,对这个东西还不是很敢造次去用.近期的项目是移动端开发,正好,内心一激动,就大大咧咧地开始用flexbox布局了.中间踩过的一些坑,以及将来可能还会踩到的坑,都在这里记录一下. 关于flexbox,有一篇文章讲的还是很透彻的,图文并茂,有兴趣的戳链接了解下.一篇很屌很好的文章 在用flexbox之前,很多人最关心的应该还是兼容性的问题.个人一直觉得,前端程序员的使命,就是要推进终端用户去使用最先进的浏览器.当然,现实是骨感的,我们

tensorboard的可视化小白踩坑填坑之路

  首先说tensorflow这个框架是真的很是强大,图像的识别,以及神经网络的构建,还有就是不得不说的可视化工具tensorboard,这个工具一般是伴随着tensorflow的安装而安装的,但是对于一个踩坑的我来说,我的tensorflow-gpu安装后居然没有tensorboard的路径以及可执行tensorboard.py的程序,这就使我很是抓狂, 1.我跑了一个特tensorflow的程序后生成一个日志文件在window的cmd下执行了一下(稍后我会介绍怎么生成日志以及实现tensor

ORA-01017: invalid username/password;坑啊坑;

HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: ORA-01017: invalid username/

随手练——HDU 1237 表达式求值(输入格式典型)

坑了老子半天,结果是 float 范围不够!!! 基本思想: 将当前符号与栈顶符号进行对比,如果当前符号优先级小于栈顶符号,数字栈弹出两个数进行栈顶符号运算,继续和当前栈顶符号比较,直到当前符号优先级大于栈顶符号,再将当前元素入栈. 符号栈初始放置一个'#',并规定 '#',优先级低于任何符号. 表达式求值是老问题了,但是之前做的也不太完善,很多小地方还是没注意到,WA了好几次. 1. 终止条件,if (s.length() == 1 && s[0] == '0') break; 否则0+

springboot踩坑出坑记

4月15到4月17我都在把毕设从eclipse重构到IDEA中,springboot最让我头疼的是它的版本问题,因为每一个版本对应的依赖包都有可能出错,这里分享一下如何成功移植用eclipse写的springboot到IDEA中,比较简单的步骤我这里不详细说了,说一下我遇到的一些很难找出问题的地方 ps:只是针对于我的项目和我个人水平,大神勿喷嘿嘿 springboot-mybatis整合坑 出现下方错误请查看启动类:XXXApplication 是否扫描到mapper映射文件,声明eclips