Problem E: Su-Su-Sudoku/center>
题目连接:
http://codeforces.com/gym/100646/attachments
Description
By now, everyone has played Sudoku: you’re given a 9-by-9 grid of boxes which you are to fill in with
the digits 1 through 9 so that 1) every row has all nine digits, 2) every column has all nine digits, and
3) all nine 3-by-3 subgrids have all nine digits. To start the game you are given a partially completed
grid and are asked to fill in the remainder of the boxes. One such puzzle is shown below.
4 8 1 2 5 3 6 9 7
2 6 7 9 4 8 1 5
5 3 9 6 7 1 2 4
6 5 4 3 8 9 7 1 2
9 8 7 4 5 6 3
1 7 3 5 6 2 8 4 9
7 2 1 3 6 9 5 8
3 1 5 8 9 7 4 2 6
8 9 6 4 2 5 3 7 1
In this problem, you will be given Sudoku grids which you have nearly completed; indeed you’ve filled
in every box except five. You are asked to complete the grid, or determine that it’s impossible. (You
might have already made an error!)
Input
The first line of input will contain a positive integer indicating the number of test cases to follow. Each
test case will be a nearly completed Sudoku grid consisting of 9 lines, each containing 9 characters from
the set of digits 0 through 9. There will be exactly five 0’s in each test case, indicating the five unfilled
boxes.
Output
Output for each test case should be either
Could not complete this grid.
if it is impossible to complete the grid according to the rules of the game, or the completed grid, in the
form given below. (There are no blank spaces in the output.) If there is a way to complete the grid, it
will be unique. Separate test cases with a blank line.
Sample Input
2
481253697
267948105
539671204
654389712
908704563
173562849
702136958
315897426
896425371
481253697
267948105
539671284
654289710
908704562
173562849
702136958
315897426
896425371
Sample Output
481253697
267948135
539671284
654389712
928714563
173562849
742136958
315897426
896425371
Could not complete this grid.
Hint
题意
给你个数独,问你有没有解。
但是这个数独最多只有5个空位。
题解:
智障题,只有五个空,那就XJBdfs就好了
代码
#include<bits/stdc++.h>
using namespace std;
string s[9];
struct node{
int x,y;
node(int X,int Y):x(X),y(Y){};
};
vector<node> V;
int flag = 0;
int vis[10];
bool check(){
for(int i=0;i<9;i++){
for(int j=0;j<10;j++)vis[j]=0;
for(int j=0;j<9;j++){
vis[s[i][j]-'0']=1;
}
for(int j=1;j<=9;j++)if(!vis[j])return false;
}
for(int i=0;i<9;i++){
for(int j=0;j<10;j++)vis[j]=0;
for(int j=0;j<9;j++){
vis[s[j][i]-'0']=1;
}
for(int j=1;j<=9;j++)if(!vis[j])return false;
}
for(int i=0;i<10;i++)vis[i]=0;
vis[s[0][0]-'0']=1;
vis[s[0][1]-'0']=1;
vis[s[0][2]-'0']=1;
vis[s[1][0]-'0']=1;
vis[s[1][1]-'0']=1;
vis[s[1][2]-'0']=1;
vis[s[2][0]-'0']=1;
vis[s[2][1]-'0']=1;
vis[s[2][2]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
for(int i=0;i<10;i++)vis[i]=0;
vis[s[0][3]-'0']=1;
vis[s[0][4]-'0']=1;
vis[s[0][5]-'0']=1;
vis[s[1][3]-'0']=1;
vis[s[1][4]-'0']=1;
vis[s[1][5]-'0']=1;
vis[s[2][3]-'0']=1;
vis[s[2][4]-'0']=1;
vis[s[2][5]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
for(int i=0;i<10;i++)vis[i]=0;
vis[s[0][6]-'0']=1;
vis[s[0][7]-'0']=1;
vis[s[0][8]-'0']=1;
vis[s[1][6]-'0']=1;
vis[s[1][7]-'0']=1;
vis[s[1][8]-'0']=1;
vis[s[2][6]-'0']=1;
vis[s[2][7]-'0']=1;
vis[s[2][8]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
for(int i=0;i<10;i++)vis[i]=0;
vis[s[3][0]-'0']=1;
vis[s[3][1]-'0']=1;
vis[s[3][2]-'0']=1;
vis[s[4][0]-'0']=1;
vis[s[4][1]-'0']=1;
vis[s[4][2]-'0']=1;
vis[s[5][0]-'0']=1;
vis[s[5][1]-'0']=1;
vis[s[5][2]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
for(int i=0;i<10;i++)vis[i]=0;
vis[s[3][3]-'0']=1;
vis[s[3][4]-'0']=1;
vis[s[3][5]-'0']=1;
vis[s[4][3]-'0']=1;
vis[s[4][4]-'0']=1;
vis[s[4][5]-'0']=1;
vis[s[5][3]-'0']=1;
vis[s[5][4]-'0']=1;
vis[s[5][5]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
for(int i=0;i<10;i++)vis[i]=0;
vis[s[3][6]-'0']=1;
vis[s[3][7]-'0']=1;
vis[s[3][8]-'0']=1;
vis[s[4][6]-'0']=1;
vis[s[4][7]-'0']=1;
vis[s[4][8]-'0']=1;
vis[s[5][6]-'0']=1;
vis[s[5][7]-'0']=1;
vis[s[5][8]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
for(int i=0;i<10;i++)vis[i]=0;
vis[s[6][0]-'0']=1;
vis[s[6][1]-'0']=1;
vis[s[6][2]-'0']=1;
vis[s[7][0]-'0']=1;
vis[s[7][1]-'0']=1;
vis[s[7][2]-'0']=1;
vis[s[8][0]-'0']=1;
vis[s[8][1]-'0']=1;
vis[s[8][2]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
for(int i=0;i<10;i++)vis[i]=0;
vis[s[6][3]-'0']=1;
vis[s[6][4]-'0']=1;
vis[s[6][5]-'0']=1;
vis[s[7][3]-'0']=1;
vis[s[7][4]-'0']=1;
vis[s[7][5]-'0']=1;
vis[s[8][3]-'0']=1;
vis[s[8][4]-'0']=1;
vis[s[8][5]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
for(int i=0;i<10;i++)vis[i]=0;
vis[s[6][6]-'0']=1;
vis[s[6][7]-'0']=1;
vis[s[6][8]-'0']=1;
vis[s[7][6]-'0']=1;
vis[s[7][7]-'0']=1;
vis[s[7][8]-'0']=1;
vis[s[8][6]-'0']=1;
vis[s[8][7]-'0']=1;
vis[s[8][8]-'0']=1;
for(int j=1;j<=9;j++)if(!vis[j])return false;
return true;
}
void dfs(int x){
if(flag)return;
if(x==V.size()){
if(check()){
for(int i=0;i<9;i++)
cout<<s[i]<<endl;
flag = 1;
return;
}
return;
}
for(int i=1;i<=9;i++){
s[V[x].x][V[x].y]=i+'0';
dfs(x+1);
if(flag)return;
s[V[x].x][V[x].y]='0';
}
}
void solve(){
flag = 0;
V.clear();
for(int i=0;i<9;i++)
cin>>s[i];
for(int i=0;i<9;i++){
for(int j=0;j<9;j++){
if(s[i][j]=='0'){
V.push_back(node(i,j));
}
}
}
dfs(0);
if(flag==0){
printf("Could not complete this grid.\n");
}
printf("\n");
}
int main(){
//freopen("1.in","r",stdin);
int t;
scanf("%d",&t);
while(t--)solve();
return 0;
}
Gym 100646 Problem E: Su-Su-Sudoku 水题的更多相关文章
-
Gym 100646 Problem C: LCR 模拟题
Problem C: LCR 题目连接: http://codeforces.com/gym/100646/attachments Description LCR is a simple game f ...
-
烟大 Contest1025 - 《挑战编程》第二章:数据结构 Problem A: Jolly Jumpers(水题)
Problem A: Jolly Jumpers Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 10 Solved: 4[Submit][Status] ...
-
2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem L. Stock Trading Robot 水题
Problem L. Stock Trading Robot 题目连接: http://www.codeforces.com/gym/100253 Description CyberTrader is ...
-
烟大 Contest1024 - 《挑战编程》第一章:入门 Problem C: The Trip(水题)
Problem C: The Trip Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 19 Solved: 3[Submit][Status][Web ...
-
Gym 100507L	Donald is a postman (水题)
Donald is a postman 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/L Description Donald ...
-
Bracket Sequences Concatenation Problem CodeForces - 990C(括号匹配水题)
明确一下 一个字符串有x左括号不匹配 和 另一个字符串有x个右括号不匹配 这俩是一定能够匹配的 脑子有点迷 emm... 所以统计就好了 统计x个左括号的有几个,x个右括号的有几个 然后 乘一 ...
-
【BZOJ】1603: [Usaco2008 Oct]打谷机(水题+dfs)
http://www.lydsy.com/JudgeOnline/problem.php?id=1603 这种水题... dfs没话说.. #include <cstdio> #inclu ...
-
Codeforces Gym 102392F Game on a Tree (SEERC2019 F题) 题解
题目链接:https://codeforces.com/gym/102392/problem/F 题意:被这题题意坑了很久,大意是说有一棵根为 \(1\) 的树,每个节点初始都是白色, \(Alice ...
-
Codeforces Gym 100531G Grave 水题
Problem G. Grave 题目连接: http://codeforces.com/gym/100531/attachments Description Gerard develops a Ha ...
随机推荐
-
iOS开发--JS调用原生OC篇
JS调用原生OC篇 方式一(反正我不用) 第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理. 我写了一个简单的HTML网页和一个btn点击 ...
-
用Dart&;Henson玩转Activity跳转
用Dart&Henson玩转Activity跳转 Extra是Android标准的组件之间(Activity/Fragment/Service等)传递数据的方式.本文介绍了开源项目Dart的使 ...
-
vi/vim初步接触
vi和vim一直被人津津乐道,到底是什么使得它们如此受欢迎? vi分为3种模式:一般模式,编辑模式,命令行模式. (1)一般模式: 进入vi后,默认就是一般模式. 用处:方便地移动光标,删除字符/整行 ...
-
Spring Autowire自动装配
在应用中,我们常常使用<ref>标签为JavaBean注入它依赖的对象.但是对于一个大型的系统,这个操作将会耗费我们大量的资源,我们不得不花费大量的时间和精力用于创建和维护系统中的< ...
-
hdu 4427 Math Magic
一个长了一张数学脸的dp!!dp[ i ][ s ][ t ] 表示第 i 个数,sum为 s ,lcm下标为 t 时的个数.显然,一个数的因子的lcm还是这个数的因子,所以我们的第三维用因子下标代替 ...
-
遇到Audio/Speech相关问题,如何抓取log
[DESCRIPTION] 遇到Audio/Speech相关问题时,经常需要抓取相关log信息,总结抓取方法如下 [SOLUTION] 1. 通话声音相关的问题: Case 1: 通话中某一 ...
-
利用jenkins做项目的自动化部署
最近领导要求上海本地的项目需要使用进jenkins实现自动化部署,以便可以直接将项目移交给运维的同学,减轻开发的工作量.记录下这次爬坑的过程. 一.前言 Jenkins是基于Java开发的一种持续集成 ...
-
40)django-常用过滤器
一.形式:小写 {{ name | lower }} 二.过滤器是可以嵌套的,字符串经过三个过滤器,第一个过滤器转换为小写,第二个过滤器输出首字母,第三个过滤器将首字母转换成大写 标签 {{ str| ...
-
spring跨域问题
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Co ...
-
[Leetcode 55]跳格子JumpGame
[题目] Given an array of non-negative integers, you are initially positioned at the first index of the ...