按3x3的小块dfs,填数的时候直接满足所有条件即可

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=15;
int a[N][N],ans[N][N];
char b[N][N],c[N][N];
bool v[5][5][N],h[N][N],l[N][N];
char read()
{
char p=getchar();
while(p!='^'&&p!='v'&&p!='<'&&p!='>')
p=getchar();//cerr<<p<<endl;
return p;
}
bool ok(int x,int y,int i)
{//cerr<<b[x][y-1]<<" "<<x<<" "<<y<<" "<<i<<" "<<a[x][y-1]<<endl;
if(h[x][i]||l[y][i])
return 0;
if(y%3!=1)
{
if(b[x][y-1]=='>'&&a[x][y-1]<i)
return 0;
if(b[x][y-1]=='<'&&a[x][y-1]>i)
return 0;
}
if(x%3!=1)
{
if(c[x-1][y]=='^'&&a[x-1][y]>i)
return 0;
if(c[x-1][y]=='v'&&a[x-1][y]<i)
return 0;
}
return 1;
}
void dfs(int p,int q,int x,int y)
{
if(ans[1][1])
return;
if(p==3)
{
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
ans[i][j]=a[i][j];
return;
}
for(int i=1;i<=9;i++)
if(!v[p][q][i]&&ok(p*3+x,q*3+y,i))
{
v[p][q][i]=1,h[p*3+x][i]=1,l[q*3+y][i]=1,a[p*3+x][q*3+y]=i;
if(q==2&&x==3&&y==3)
dfs(p+1,0,1,1);
else if(x==3&&y==3)
dfs(p,q+1,1,1);
else if(y==3)
dfs(p,q,x+1,1);
else
dfs(p,q,x,y+1);
v[p][q][i]=0,h[p*3+x][i]=0,l[q*3+y][i]=0,a[p*3+x][q*3+y]=0;
}
}
int main()
{
for(int i=0;i<3;i++)
{
for(int j=0;j<6;j++)
b[i*3+1][j/2*3+j%2+1]=read();
for(int j=1;j<=9;j++)
c[i*3+1][j]=read();
for(int j=0;j<6;j++)
b[i*3+2][j/2*3+j%2+1]=read();
for(int j=1;j<=9;j++)
c[i*3+2][j]=read();
for(int j=0;j<6;j++)
b[i*3+3][j/2*3+j%2+1]=read();
}
// for(int i=1;i<=9;i++)
// {
// for(int j=1;j<=9;j++)
// cerr<<c[i][j];
// cerr<<endl;
// }
dfs(0,0,1,1);
for(int i=1;i<=9;i++)
{
for(int j=1;j<=9;j++)
printf("%d ",ans[i][j]);
puts("");
}
return 0;
}

bzoj 3109: [cqoi2013]新数独【dfs】的更多相关文章

  1. bzoj 3109: [cqoi2013]新数独

    #include<cstdio> #include<iostream> using namespace std; ][],li[][],xi[][],a[][],bh[][], ...

  2. 3109. [CQOI2013]新数独【DFS】

    Description Input 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第偶数行包含上下方向的符号(^和v).   Output 输出包含9行,每行 ...

  3. B3109 [cqoi2013]新数独 搜索dfs

    就是基于普通数独上的一点变形,然后就没什么了,普通数独就是进行一边dfs就行了. 题干: 题目描述 输入格式 输入一共15行,包含一个新数独的实例.第奇数行包含左右方向的符号(<和>),第 ...

  4. bzoj 3105: [cqoi2013]新Nim游戏 异或高消 && 拟阵

    3105: [cqoi2013]新Nim游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 535  Solved: 317[Submit][Stat ...

  5. BZOJ3109: [cqoi2013]新数独

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3109 搜索一遍.读入注意一下.. #include<cstring> #inclu ...

  6. CQOI2013 新数独

    传送门 这道题也是很暴力的搜索啊…… 因为数独一开始全是空的,只有许许多多的大小限制条件,那也没必要纠结从哪开始搜索了,直接暴力搜索之后判断一下是否合法. 这题最恶心的是读入.现学了一招判断点在哪个块 ...

  7. 【搜索】bzoj3109 [cqoi2013]新数独

    搜索,没什么好说的.要注意读入. Code: #include<cstdio> #include<cstdlib> using namespace std; ][]= {{,, ...

  8. BZOJ 3105 [CQOI2013]新Nim游戏 ——线性基

    [题目分析] 神奇的题目,两人都可以第一次取走足够多堆的石子. nim游戏的规则是,如果异或和为0,那么就先手必输,否则先手有必胜策略. 所以只需要剩下一群异或和为0就可以了. 先排序,线性基扫一遍即 ...

  9. BZOJ 3105: [cqoi2013]新Nim游戏

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3105 题意是要取一些数使得剩余的数xor和的子集不为0 拟阵.求解极大线性无关组.贪心从大到小 ...

随机推荐

  1. C#中Queue&lt;T&gt;类的使用以及部分方法的源代码分析

    Queue<T>类 表示对象的先进先出集合. 队列在按接收顺序存储消息方面很实用,以便于进行顺序处理. 存储在 Queue,<T> 中的对象在一端插入,从还有一端移除. Que ...

  2. 微信小程序项目实例

    目前为止最全的微信小程序项目实例 2018年03月20日 11:38:28 Happy王子乐 阅读数:4188   wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch ...

  3. PHP-MySQL,PHP-MySQLi,PDO的差异

    PHP-MySQL是PHP操作MySQL数据库最原始的Extension ,PHP-MySQLi的i代表Improvement ,提供了更加高级的功能,就Extension而言,本身也增加了安全性.而 ...

  4. 浅谈JavaScript的Canvas(绘制图形)

    HTML5中新增加的一个元素canvas,要使用canvas元素,浏览器必须支持html5.通过canvas标签来创建元素,并需要为canvas指定宽度和高度,也就是绘图区域的大小. <canv ...

  5. GB2312,GBK,GB18030,UTF8四种汉字编码标准有什么差别和联系

     从GB2312.GBK 到 GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有同样的编码,后面的标准支持很多其它的字符.在这些编码中,英文和中文能够统一地处理. 区分中文编 ...

  6. 常见mysql分布式数据中间件

    一般分为三种: 1. proxy sharding,目前由cobar,mycat,drds,atlas修改,这几个产品的起源一般是mysqlproxy 或 ameoba,特点是mysql协议基本兼容, ...

  7. BAPI_PO_CEATE 与PO_1

  8. vue中导出Excel表格

    项目中我们可能会碰到导出Excel文件的需求,一般后台管理系统中居多,将table中展示的数据导出保存到本地.当然我们也可以通过一些处理来修改要导出的数据格式,具体需求具体对待. 1.首先我们需要安装 ...

  9. HDU1693 Eat the Trees —— 插头DP

    题目链接:https://vjudge.net/problem/HDU-1693 Eat the Trees Time Limit: 4000/2000 MS (Java/Others)    Mem ...

  10. oracle:数据库版本问题导致的bug

    公司开发出来的系统,由于各现场oracle数据库版本有10.2.0.4.11.2.0.1.11.2.0.3.11.2.0.4: 进而会导致版本不一导致错误问题.下面列举2个: 1.wm_concat ...