训练总结8.4
2017-08-04 22:50
120 查看
今天遇到了数独题,记得曾经见过,但是第一感觉太复杂掠过去,今天发现了其中不少的问题,搜索的时候 那个点带进值的时候要试一下合不合适,每一行,每一列的还比较好说,重要的是,在小的九方格 里的判断。下标 x和y, 九方格左上角的下标是x-x%3, y-y%3 。真的困在这个数独题上还是 好久。
数独链接
今天还遇到一道 不太一样搜索题,搜索的带有方向
链接 ,最短路径的很简单,最主要的是 向右,和向左走的方向问题。
code:
数独链接
今天还遇到一道 不太一样搜索题,搜索的带有方向
链接 ,最短路径的很简单,最主要的是 向右,和向左走的方向问题。
code:
#if 0 #include<iostream> using namespace std; int a[15][15],cnt; bool flag=0; int ok(int x,int y,int k) { for(int i=0; i<9; i++) { if(a[x][i]==k) return 0; if(a[i][y]==k) return 0; } int sx=x-x%3; int sy=y-y%3; for(int i=sx; i<sx+3; i++) { for(int j=sy; j<sy+3; j++) { if(a[i][j]==k) return 0; } } return 1; } void dfs(int num) { bool flag1=0; int x,y; if(num==cnt) { for(int i=0; i<9; i++) { for(int j=0; j<9; j++) { cout<<a[i][j]; } cout<<endl; } flag=1; return; } if(flag) return; for(int i=0; i<9; i++) { for(int j=0; j<9; j++) { if(a[i][j]==0) { flag1=1; x=i;y=j; break; } } if(flag1) break; } for(int k=1; k<=9; k++) { if(ok(x,y,k)) { a[x][y]=k; dfs(num+1); a[x][y]=0; } } } int main() { int N; char c; cin>>N; while(N--) { flag=0; cnt=0; for(int i=0; i<9; i++) { for(int j=0; j<9; j++) { cin>>c; a[i][j]=c-'0'; if(a[i][j]==0) cnt++; } } dfs(0); } } #endif
相关文章推荐
- 2017.8.31开学第一周周中训练总结
- 拓展训练总结(二)
- 9.8~9.10 训练总结
- ACM训练半周总结—11月3日
- 2017开学训练第五周周中总结
- 2017 四川省赛训练总结 2017/7/16
- 2015.11.2~5训练总结
- 训练总结 1.23 字典树
- 华为机试训练做题总结(二)
- 元旦图论搜索训练的总结
- GDOI冲刺训练模拟赛第二套总结
- 拓展训练总结
- 8.13-8.14训练总结
- OpenCV3.1 SVM+HOG训练经验总结
- 大二上训练总结吧
- 训练总结 1.30
- 华为机试训练做题总结(一)
- ACM训练半周总结—11月16日
- 第七周训练总结(二)
- OpenCV中Adaboost训练的经验总结