POJ2676 2918 Sudoku 暴搜
来源:互联网 发布:js的随机数生成 编辑:程序博客网 时间:2024/05/21 20:42
#include <cstdio>#include <iostream>#include <iostream>#include <algorithm>using namespace std;int s[][2] = {{1,1},{1,4},{1,7},{4,1},{4,4},{4,7},{7,1},{7,4},{7,7}};int a[10][10];int ch[] = {0,0,0,1,1,1,2,2,2, 0,0,0,1,1,1,2,2,2, 0,0,0,1,1,1,2,2,2, 3,3,3,4,4,4,5,5,5, 3,3,3,4,4,4,5,5,5, 3,3,3,4,4,4,5,5,5, 6,6,6,7,7,7,8,8,8, 6,6,6,7,7,7,8,8,8, 6,6,6,7,7,7,8,8,8, };int check(int step,int k){ int x = step/9; int y = step%9; for(int i = 0;i < 9;i++){ if(a[x][i] == k)return 0; if(a[i][y] == k)return 0; } int q = ch[step]; x = s[q][0]; y = s[q][1]; for(int i = -1;i <= 1;i++){ for(int j = -1;j <= 1;j ++){ if(a[x+i][y+j]==k){ return 0; } } } return 1;}int fun(int step){ if(step >= 81) return 1; if(a[step/9][step%9] != 0){ return fun(step+1); } for(int i = 1;i <= 9;i++){ if(check(step,i)){ a[step/9][step%9] = i; if(fun(step+1)){ return 1; } a[step/9][step%9] = 0; } } return 0;}int main(){ int t; cin >> t; while(t--){ for(int i = 0;i < 9;i++){ for(int j = 0;j < 9;j++){ scanf("%1d",&a[i][j]); } } fun(0); for(int i = 0;i < 9;i++){ for(int j = 0;j < 9;j++){ printf("%d",a[i][j]); } printf("\n"); } printf("\n"); } return 0;}
#include <cstdio>#include <iostream>#include <iostream>#include <algorithm>using namespace std;int s[][2] = {{1,1},{1,4},{1,7},{4,1},{4,4},{4,7},{7,1},{7,4},{7,7}};int a[10][10];int ch[] = {0,0,0,1,1,1,2,2,2, 0,0,0,1,1,1,2,2,2, 0,0,0,1,1,1,2,2,2, 3,3,3,4,4,4,5,5,5, 3,3,3,4,4,4,5,5,5, 3,3,3,4,4,4,5,5,5, 6,6,6,7,7,7,8,8,8, 6,6,6,7,7,7,8,8,8, 6,6,6,7,7,7,8,8,8, };int check(int step,int k){ int x = step/9; int y = step%9; for(int i = 0;i < 9;i++){ if(a[x][i] == k)return 0; if(a[i][y] == k)return 0; } int q = ch[step]; x = s[q][0]; y = s[q][1]; for(int i = -1;i <= 1;i++){ for(int j = -1;j <= 1;j ++){ if(a[x+i][y+j]==k){ return 0; } } } return 1;}int fun(int step){ if(step >= 81) return 1; if(a[step/9][step%9] != 0){ return fun(step+1); } for(int i = 1;i <= 9;i++){ if(check(step,i)){ a[step/9][step%9] = i; if(fun(step+1)){ return 1; } a[step/9][step%9] = 0; } } return 0;}int main(){ int t; cin >> t; int T = 1; while(t--){ for(int i = 0;i < 9;i++){ for(int j = 0;j < 9;j++){ scanf("%1d",&a[i][j]); } } fun(0); printf("Scenario #%d:\n",T++); for(int i = 0;i < 9;i++){ for(int j = 0;j < 9;j++){ printf("%d",a[i][j]); } printf("\n"); } printf("\n"); } return 0;}
0 0
- POJ2676 2918 Sudoku 暴搜
- poj2676(Sudoku)
- poj2676 - Sudoku
- POJ2676--Sudoku
- poj2676 Sudoku
- poj2676 Sudoku
- POJ2676 Sudoku
- POJ2676 Sudoku
- poj2676 Sudoku
- poj2676 Sudoku
- POJ2676-Sudoku
- poj2676 Sudoku 数独
- 北大ACM poj2676 Sudoku
- POJ2676:Sudoku(DFS)
- POJ2676 Sudoku [数独]
- POJ2676:Sudoku(DFS)
- POJ2676 Sudoku DFS
- 回溯-POJ2676-Sudoku
- 【python】python读写excel
- UVA 1225 Digit Counting 【ACM/ICPC Danang 2007】
- Android中图像变换Matrix的原理、代码验证和应用(二)
- OJ 刷题---串的简单处理
- 静态方法和静态代码块
- POJ2676 2918 Sudoku 暴搜
- 二十年目睹之怪状 序
- 命令行参数
- final、finally和finalize的区别
- VS2010 (C#)winform程序打包发布图解(转+自己修改)
- 野人学Android基础篇之初探UI控件第三课--Button
- UVa 11536:Smallest Sub-Array(滑动窗口)
- 8-25
- SSM框架搭建,新手学习中,欢迎指教