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 水题的更多相关文章

  1. Gym 100646 Problem C: LCR 模拟题

    Problem C: LCR 题目连接: http://codeforces.com/gym/100646/attachments Description LCR is a simple game f ...

  2. 烟大 Contest1025 - 《挑战编程》第二章:数据结构 Problem A: Jolly Jumpers(水题)

    Problem A: Jolly Jumpers Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 10  Solved: 4[Submit][Status] ...

  3. 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 ...

  4. 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem C: The Trip(水题)

    Problem C: The Trip Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 19  Solved: 3[Submit][Status][Web ...

  5. Gym 100507L Donald is a postman (水题)

    Donald is a postman 题目链接: http://acm.hust.edu.cn/vjudge/contest/126546#problem/L Description Donald ...

  6. Bracket Sequences Concatenation Problem CodeForces - 990C(括号匹配水题)

    明确一下  一个字符串有x左括号不匹配  和 另一个字符串有x个右括号不匹配  这俩是一定能够匹配的 脑子有点迷 emm... 所以统计就好了  统计x个左括号的有几个,x个右括号的有几个 然后 乘一 ...

  7. 【BZOJ】1603: [Usaco2008 Oct]打谷机(水题+dfs)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1603 这种水题... dfs没话说.. #include <cstdio> #inclu ...

  8. Codeforces Gym 102392F Game on a Tree (SEERC2019 F题) 题解

    题目链接:https://codeforces.com/gym/102392/problem/F 题意:被这题题意坑了很久,大意是说有一棵根为 \(1\) 的树,每个节点初始都是白色, \(Alice ...

  9. Codeforces Gym 100531G Grave 水题

    Problem G. Grave 题目连接: http://codeforces.com/gym/100531/attachments Description Gerard develops a Ha ...

随机推荐

  1. Lua程序设计(三)面向对象实现一个简单的类

    1.Lua面向对象实现步骤 ①创建一个全局表(称之为元表) ②设置这个元表的__index值(值通常为元表自己,这样就能通过__index查找到对应的属性和方法)__index 赋值其实是一个func ...

  2. 总有一些实用javascript的元素被人遗忘在角落-slice

    slice() 方法可从已有的数组中返回选定的元素. 好吧,我承认我竟然把它忘了! 这次我在回顾一下它 语法 arrayObject.slice(start,end) 数组.slice(起始,结束) ...

  3. iOS常用小功能

    CHENYILONG Blog 常用小功能 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong  ...

  4. [R语言]关联规则1---不考虑items之间的时序关系

    本文介绍的是关联规则,分为两部分:第一部分是---不考虑用户购买的items之间严格的时序关系,每个用户有一个“购物篮”,查找其中的关联规则.第二部分--- 考虑items之间的严格的时序关系来分析用 ...

  5. [机器学习笔记]主成分分析PCA简介及其python实现

    主成分分析(principal component analysis)是一种常见的数据降维方法,其目的是在“信息”损失较小的前提下,将高维的数据转换到低维,从而减小计算量. PCA的本质就是找一些投影 ...

  6. Android EditText被软键盘遮盖处理

    这两天android app新增了透明栏效果,结果发现键盘弹起后会遮盖屏幕底部的EditText,没有像想象中的调整窗口大小,并滚动ScrollView,将EditText显示在键盘上方.之前也遇到过 ...

  7. 【Python】测试dpkt解析pcap

    1.前言 本想借助dpkt解析mail.dns.http来辅助分析pcap包进行分析,查阅资料学习却发现并不如使用scapy那么方便. dpkt是一个python模块,可以对简单的数据包创建/解析,以 ...

  8. if语句引起的bug

    最近维护高手留下的api项目,客户端反馈一个bug过来,然后查找到可能出错的代码位置,是一个if语句,乍一看好像没什么问题,代码如下: if (company.UserId != userId || ...

  9. flask基础之LocalProxy代理对象(八)

    前言 flask框架自带的代理对象有四个,分别是request,session,g和current_app,各自的含义我们在前面已经详细分析过.使用代理而不是显式的对象的主要目的在于这四个对象使用太过 ...

  10. mysql Keepalived 实践

    Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,通过配合Nginx可 ...