bzoj3109: [cqoi2013]新数独
来源:互联网 发布:string数组添加数据 编辑:程序博客网 时间:2024/06/05 15:45
就是耿直的搜索然后就rank最后一名了…
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9') ch=getchar(); while(ch>='0'&&ch<='9') {f=f*10+(ch^48);ch=getchar();} return f;}char s[17][17],now;int a[15][15],b[15][15],ans[15][15];bool ac=0;void dfs(int x,int y){ //cout<<x<<" "<<y<<endl; for(int i=1;i<=9;i++) { if(ac) return; ans[x][y]=i; bool ok=1; for(int j=1;j<=9;j++) { if((ans[x][j]==ans[x][y]&&j!=y)||(ans[j][y]==ans[x][y]&&x!=j)) { ok=0; break; } } int lx=(x-1)/3*3+1,rx=lx+2,ly=(y-1)/3*3+1,ry=ly+2; //cout<<ly<<" "<<ry<<endl;cout<<ok<<" "; if(ok) { for(int j=lx;j<=x;j++) { for(int l=ly;l<=ry;l++) { if(ans[x][y]==ans[j][l]&&(x!=j||y!=l)) { ok=0; break; } } if(!ok) break; } } if(ok) { if(x!=1) { if((b[x-1][y]==1&&ans[x-1][y]<ans[x][y])||(b[x-1][y]==0&&ans[x-1][y]>ans[x][y])) ok=0; } if(y!=1) { if((a[x][y-1]==1&&ans[x][y-1]<ans[x][y])||(a[x][y-1]==0&&ans[x][y-1]>ans[x][y])) ok=0; } } if(ok) { if(x==9&&y==9) { ac=1; return; } else if(y==9) { dfs(x+1,1); } else dfs(x,y+1); } if(!ac) ans[x][y]=0; }}int transx(char x){ return (x=='>');}int transy(char x){ return (x=='v');}int main(){ for(int i=1;i<=15;i++) { if(i==2||i==4||i==7||i==9||i==12||i==14) { for(int j=1;j<=9;j++) cin>>s[i][j]; } else { for(int j=1;j<=6;j++) cin>>s[i][j]; } } for(int i=1;i<=15;i++) { if(s[i][1]=='>'||s[i][1]=='<') { now++; a[now][1]=transx(s[i][1]); a[now][2]=transx(s[i][2]); a[now][3]=2; a[now][4]=transx(s[i][3]); a[now][5]=transx(s[i][4]); a[now][6]=2; a[now][7]=transx(s[i][5]); a[now][8]=transx(s[i][6]); a[now][9]=2; } } now=0; for(int i=1;i<=15;i++) { if(s[i][1]=='v'||s[i][1]=='^') { now++; if(now%3==0) { for(int j=1;j<=9;j++) b[now][j]=2;now++; } for(int j=1;j<=9;j++) b[now][j]=transy(s[i][j]); } } for(int i=1;i<=9;i++) b[9][i]=2; /*for(int i=1;i<=9;i++) { for(int j=1;j<=9;j++) printf("%d ",a[i][j]); printf("\n"); }*/ dfs(1,1); //cout<<ac; for(int i=1;i<=9;i++) { for(int j=1;j<=8;j++) { printf("%d ",ans[i][j]); } printf("%d",ans[i][9]); puts(""); }}
阅读全文
0 0
- bzoj3109: [cqoi2013]新数独
- bzoj3109: [cqoi2013]新数独 dfs
- [BZOJ3109][cqoi2013]新数独 && 搜索
- bzoj3109【CQOI2013】新数独
- bzoj3109: [cqoi2013]新数独
- [CQOI2013]新数独
- 3109: [cqoi2013]新数独 (回溯)
- 3109: [cqoi2013]新数独
- 【CQOI2013】新数独 爆搜
- 【CQOI2013】新数独 搜索
- BZOJ 3109([cqoi2013]新数独-搜索)
- BZOJ 3109: [cqoi2013]新数独 dfs
- CQOI2013 棋盘游戏
- [CQOI2013]新Nim游戏
- [CQOI2013]棋盘游戏
- [CQOI2013]二进制a+b
- cqoi2013 新Nim游戏
- bzoj3105: [cqoi2013]新Nim游戏
- python 第二章 列表操作
- 堆的创建及堆排序
- java使用jdbc连接mysql数据库
- 关于时间的jquery插件
- Java基础总结
- bzoj3109: [cqoi2013]新数独
- 如何判断一个基本类型的变量的类型呢?
- sqoop操作之HDFS导出到ORACLE
- 剑指15-输出链表中倒数第k个结点
- 那些年重温GreenDao时遇到的坑
- Codeforces492C【模拟】
- Java Bug 6260652 记录
- 【C++】改错题总结
- Jfinal学习日志第一章-快速上手(详细图解)