POJ - 2676 暴搜 注意实现细节
经典sudoku问题
按部就班就好
一定要注意细节
大于1还是大于等于1
r c越界判断
judge时0的特判
blabla居然磨了2个小时
改了很多地方所以实现得有点冗余,反正能A吧
/*H E A D*/
int sudo[66][66];
char str[666];
int usedr[66][11];
int usedc[66][11];
int rsum[66],csum[66];
typedef pair<int,int> P;
P pos(int i,int j){
if(i>=1&&i<=3){
if(j>=1&&j<=3) return P(1,1);
if(j>=4&&j<=6) return P(1,4);
if(j>=7&&j<=9) return P(1,7);
}
if(i>=4&&i<=6){
if(j>=1&&j<=3) return P(4,1);
if(j>=4&&j<=6) return P(4,4);
if(j>=7&&j<=9) return P(4,7);
}
if(i>=7&&i<=9){
if(j>=1&&j<=3) return P(7,1);
if(j>=4&&j<=6) return P(7,4);
if(j>=7&&j<=9) return P(7,7);
}
}
int check2;
bool cal2(int nowr,int nowc,int num){
int sum=0;
if(rsum[nowr]+num>45||csum[nowc]+num>45)return 0;
P p=pos(nowr,nowc);
int sr=p.first,sc=p.second;
check2=0;
rep(i,1,9) if(sudo[nowr][i]==num){
++check2;
if(check2>=1)return 0;
}
check2=0;
rep(i,1,9) if(sudo[i][nowc]==num){
++check2;
if(check2>=1)return 0;
}
check2=0;
rep(i,sr,sr+2){
rep(j,sc,sc+2){
if(sudo[i][j]==num){
++check2;
if(check2>=1)return 0;
}
}
}
return 1;
}
int cnt=0;
bool dfs(int r,int c){
if(r==9&&c==10)return 1;
else if(c==10){
c=1;
r++;
if(r==10)return 1;
}
while(sudo[r][c]){
c++;
if(c==10){
c=1;
r++;
if(r==10)return 1;
}
}
rep(i,1,9){
if(usedr[r][i]||usedc[c][i]||cal2(r,c,i)==0){
continue;
}
if(!cal2(r,c,i))continue;
usedr[r][i]++;usedc[c][i]++;
rsum[r]+=i;csum[c]+=i;
sudo[r][c]=i;
if(dfs(r,c+1))return 1;
else{
usedr[r][i]--;usedc[c][i]--;
rsum[r]-=i;csum[c]-=i;
sudo[r][c]=0;
}
}
return 0;
}
int main(){
int T=read();
while(T--){
memset(usedr,0,sizeof usedr);
memset(usedc,0,sizeof usedc);
memset(rsum,0,sizeof rsum);
memset(csum,0,sizeof csum);
rep(i,1,9){
s1(str);
rep(j,1,9) sudo[i][j]=str[j]-'0';
}
bool flag=0;
rep(i,1,9){
rep(j,1,9){
if(!sudo[i][j])continue;
if(++usedr[i][sudo[i][j]]>1){
flag=1;
}
if(++usedc[j][sudo[i][j]]>1){
flag=1;
}
rsum[i]+=sudo[i][j];
csum[j]+=sudo[i][j];
}
}
dfs(1,1);
rep(i,1,9){
rep(j,1,9){
print(sudo[i][j]);
}
enter;
}
}
return 0;
}
POJ - 2676 暴搜 注意实现细节的更多相关文章
- POJ 1945 暴搜+打表 (Or 暴搜+判重)
思路: 呃呃 暴搜+打表 暴搜的程序::稳稳的TLE+MLE (但是我们可以用来打表) 然后我们就可以打表过了 hiahiahia 可以证明最小的那个数不会超过200(怎么证明的我也不知道),然后就直 ...
- POJ 1414 暴搜
题意比较复杂 (但是很好理解) 大概意思是给你等边三角形(详见题目中的图). 最后一行有n个数,下一次要填的数是c. 里面预先已经填好了数字.(0为未填) 得分的标准是这个分数的连通块周围没有空的地方 ...
- POJ 3188暴搜
题意: 思路: 裸的暴搜 --. 但是要注意如果你不用所有的按键就能输出最优解的话一定要把所有的字母都安排到一个位置-. 我的一群PE就是这么来的-- 为什么写的人这么少-- // by Sirius ...
- POJ 2132 暴搜OR Floyd
题意: 给你一个邻接矩阵(n<=25)问所有1到2路径的gcd的lcm是多少. 一些经验(WA/TLE的经验): 1. 无脑暴搜 是会TLE的--. 2. 关于精度 dyf神牛说了:long l ...
- POJ 2133 暴搜
题意: 思路: 按照题意暴搜 注意 如果目标串==给的串 答案是2 //By SiriurRen #include <cstdio> #include <cstring> #i ...
- POJ 1543 暴搜
题意:输出a^3=b^3+c^3+d^3的所有a,b,c,d的值. b,c,d由小到大且b,c,d都大于1. 思路: 按照题意写就好.... // by SiriusRen #include < ...
- POJ 1950暴搜
思路: 暴力枚举好了..每回判断一下-- 用long long会超时 但是10^20会爆int... 不过仔细想一想 超过10^9的数肯定拼不回0啊-- 猥琐用int AC了 (当然可以打表 ) // ...
- 深搜+回溯 POJ 2676 Sudoku
POJ 2676 Sudoku Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17627 Accepted: 8538 ...
- poj 3080 Blue Jeans(水题 暴搜)
题目:http://poj.org/problem?id=3080 水题,暴搜 #include <iostream> #include<cstdio> #include< ...
随机推荐
- CMake 自定义编译选项
自定义编译选项 CMake 允许为项目增加编译选项,从而可以根据用户的环境和需求选择最合适的编译方案. 例如,可以将 MathFunctions 库设为一个可选库,如果该选项为 ON ,就使用该库定义 ...
- Apache rotatelogs命令
一.简介 rotatelogs 是 Apache 自带的管道日志程序,可以完美的实现日志的轮转功能. 二.语法 Usage: rotatelogs [-v] [-l] [-L linkname] [- ...
- bootstrap三列布局
<!DOCTYPE html><html lang="zh-cn"><head><meta charset="utf-8&quo ...
- HTML5+CSS3网站设计教程 (张晓景,胡克) [iso]
<HTML5+CSS3网站设计教程>系统地讲解了CSS的基础理论和实际运用技术,并结合多个案例讲解了采用CSS与层布局相结合制作网页的方法,在详细讲解各个案例的制作中,不仅介绍了CSS样式 ...
- vitamio遇到的坑,都是不能播放
在模拟器上可以运行,在真机上不能用,一点就app全退了,不知原因,没办法用as连接到真机上调试,才发现是版本过高的原因,不支持sdk 23,大家的办法都是改成21, targetSdkVersion ...
- vs2015 使用 Eazfuscator.NET 3.3
出现问题: Unable to cast object System.Xml.XmlComment’ to type ‘System.Xml.XmlElement’ 解决办法: 打开 *.csproj ...
- HTML4.0 需要掌握的主要内容
常用标签: <html></html> 创建一个HTML文档 <head></head> 设置文档标题和其它在网页中不显示的信息 <title&g ...
- xcode9 上传app后iTues 构建版本不显示
1.问题原因 苹果公司更新了ios10系统和xcode9以后,做了许多调整,如果开发者没有注意就会遇到这样那样的问题.作者在更新以后就遇到了上传app到appstore成功后,没有显示的问题.下面就介 ...
- 连续bezier曲线的实现
需求场景 一系列的坐标点,划出一条平滑的曲线 3次Bezier曲线 基本上大部分绘图工具都实现了3次Bezier曲线,4个点确定一条3次Bezier曲线.以html5中的canvas为例 let ct ...
- C#委托笔记
参考: 第一篇:http://www.tracefact.net/tech/009.html 第二篇:http://www.tracefact.net/tech/029.html 1.委托相当于一种参 ...