ACM 数独

时间:2023-01-09 13:51:46

数独

时间限制:1000 ms  |  内存限制:65535 KB
难度:4
 
描述

数独是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个3*3宫内的数字均含1-9,不重复。 每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。

有一天hrdv碰到了一道号称是世界上最难的数独的题目,作为一名合格的程序员,哪能随随便便向困难低头,于是他决定编个程序来解决它。。

ACM  数独

 
输入
第一行有一个数n(0< n <100),表示有n组测试数据,每组测试数据是由一个9*9的九宫格构成,0表示对应的格子为空
输出
输出一个9*9的九宫格,为这个数独的答案
样例输入
1
0 0 5 3 0 0 0 0 0
8 0 0 0 0 0 0 2 0
0 7 0 0 1 0 5 0 0
4 0 0 0 0 5 3 0 0
0 1 0 0 7 0 0 0 6
0 0 3 2 0 0 0 8 0
0 6 0 5 0 0 0 0 9
0 0 4 0 0 0 0 3 0
0 0 0 0 0 9 7 0 0
样例输出
1 4 5 3 2 7 6 9 8
8 3 9 6 5 4 1 2 7
6 7 2 9 1 8 5 4 3
4 9 6 1 8 5 3 7 2
2 1 8 4 7 3 9 5 6
7 5 3 2 9 6 4 8 1
3 6 7 5 4 2 8 1 9
9 8 4 7 6 1 2 3 5
5 2 1 8 3 9 7 6 4
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std; int gameMap[][];
bool flag = false; bool check_vaild_3x3(int x,int y, int v){
for(int i = ; i < ; ++ i)
if(gameMap[x][i] == v || gameMap[i][y] == v) return false;
int row = x/*, col = y/*;
for(int i = ; i < ; ++ i){
for(int j = ; j < ; ++ j){
if(gameMap[row+i][col+j] == v) return false;
}
}
return true;
} void print_game(){
for(int i = ; i < ; ++ i){
for(int j = ; j < ; ++j){
cout<<gameMap[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
} void dfs(int x,int y){
if(flag) return;
if(x == && y == ) {
flag = true;
print_game();
return;
}
if(y == ) dfs(x+,);
if(gameMap[x][y]) dfs(x,y+);
else{
for(int i = ; i <= ; ++ i){
if(check_vaild_3x3(x,y,i)){
gameMap[x][y] = i;
dfs(x,y+);
gameMap[x][y] = ;
}
}
}
} int main(){
int n;
cin >> n;
while(n--){
memset(gameMap,,sizeof(gameMap));
flag = false;
for(int i = ; i < ; ++i ){
for(int j = ; j < ; ++ j){
cin >> gameMap[i][j];
}
}
dfs(,);
}
}

ACM 数独的更多相关文章

  1. ACM &colon; POJ 2676 SudoKu DFS - 数独

    SudoKu Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu POJ 2676 Descr ...

  2. ACM: ICPC&sol;CCPC Sudoku DFS - 数独

    Sudoku Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/65535K (Java/Other) Total Submis ...

  3. ACM题目————数独

    描述 数独是一种运用纸.笔进行演算的逻辑游戏.玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个3*3宫内的 数字均含1-9,不重复. 每一道合格的数独谜题都有 ...

  4. HDU 4069 Squiggly Sudoku(DLX)(The 36th ACM&sol;ICPC Asia Regional Fuzhou Site —— Online Contest)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4069 Problem Description Today we play a squiggly sud ...

  5. HDU&lowbar;1426——数独问题&comma;DFS

    Problem Description 自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视. 据说,在2008北京奥运会上,会将数独列为一个单独的项目进行 ...

  6. 数独 &lpar;dfs&rpar;

    自从2006年3月10日至11日的首届数独世界锦标赛以后,数独这项游戏越来越受到人们的喜爱和重视.据说,在2008北京奥运会上,会将数独列为一个单独的项目进行比赛,冠军将有可能获得的一份巨大的奖品—— ...

  7. HDU - 5547 Sudoku(数独搜索)

    Description Yi Sima was one of the best counselors of Cao Cao. He likes to play a funny game himself ...

  8. 牛客网暑期ACM多校训练营(第七场)J题&lpar;Sudoku Subrectangles&rpar;题解

    一.题意 给定一个高度为$n$,宽度为$m$的字母矩形(有大写和小写字母,共$52$种),问里面有多少个子矩形是“数独矩形”.数独矩形是指,该矩形内每一行内元素都不相同,每一列内元素也不相同. 二.思 ...

  9. hdu 1426&colon;Sudoku Killer(DFS深搜,进阶题目,求数独的解)

    Sudoku Killer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

随机推荐

  1. maven引入的jar带了时间戳

    正常情况下,我们引入的第三方jar一般都是类似spider-1.0.5-SNAPSHOT.jar的名称,但是有些环境下,我们引入的三方jar会带上了时间戳,如下所示: spider-1.0.5-201 ...

  2. phoenix 索引修复-基本流程

    索引修复基本流程

  3. C&num;操作符&quest;&quest;和&quest;&colon;

    C#操作符??和?: 先看如下代码: string strParam = Request.Params["param"]; if ( strParam== null ) {     ...

  4. POJ 2418

    http://poj.org/problem?id=2418 这是一个二叉树的题目,但我看了下书,还是不是特别理解会用二叉树,所以我就用其他的办法来做,结果一样AC,时间也就1700多ms,比起二叉树 ...

  5. 【从零学习openCV】IOS7下的人脸检測

    前言: 人脸检測与识别一直是计算机视觉领域一大热门研究方向,并且也从安全监控等工业级的应用扩展到了手机移动端的app,总之随着人脸识别技术获得突破,其应用前景和市场价值都是不可估量的,眼下在学习ope ...

  6. 管道函数&lpar;pipelined function&rpar;简单使用示例

    -----------------------------Cryking原创------------------------------ -----------------------转载请注明出处, ...

  7. 文本可视化&lbrack;二&rsqb;——《今生今世》人物关系可视化python实现

    文本可视化[二]--<今生今世>人物关系可视化python实现 在文本可视化[一]--<今生今世>词云生成与小说分析一文中,我使用了jieba分词和wordcloud实现了,文 ...

  8. Java实现贪吃蛇游戏【代码】

    花了两个下午写了一个贪吃蛇小游戏,本人想写这游戏很长时间了.作为以前诺基亚手机上的经典游戏,贪吃蛇和俄罗斯方块一样,都曾经在我们的童年给我们带来了很多乐趣.世间万物斗转星移,诺基亚曾经作为手机业的龙头 ...

  9. java快排思想

    1分治思想 1.1比大小在分区 1.2从数组中取出一个数做基准数 1.3将比他小的数全放在他的左边,比他大的数全放在他的右边 1.4然后递归 左边 和右边 }

  10. ThinkPHP5 与ThinkPHP3&period;2公共函数放置位置

    最初使用ThinkPHP3..3的时候,我们自己定义的公共函数常常放置于 \Common\function.php 由于最近准备重新捡起微信开发,准备用ThinkPHP5进行微信公众号开发,使用到公共 ...