| ||||||||||
Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
0MS呀,一次AC,发代码留恋#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <queue> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime> #include <cstring> using namespace std; #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b)) #define sqr(a) ((a)*(a)) #define rep(i,a,b) for(i=(a);i<(b);i++) #define REP(i,n) rep(i,0,n) #define inf 1000000000 #define N 10 char g[N][N]; bool row[N][N]; bool col[N][N]; bool square[N][N]; stack<int> s; int getsquare(int x,int y) { return (x-1)/3*3+(y-1)/3+1; } bool check(int x,int y,int value) { return !row[x][value]&&!col[y][value]&&!square[getsquare(x,y)][value]; } bool solve() { int i; bool f=false; if(!s.empty()) { int index=s.top(); s.pop(); int x=index/9+1; int y=index%9+1; rep(i,1,N) { if(check(x,y,i)) { f=true; row[x][i]=true; col[y][i]=true; square[getsquare(x,y)][i]=true; g[x][y]=i+'0'; if(solve()) { return true; }else { f=false; row[x][i]=false; col[y][i]=false; square[getsquare(x,y)][i]=false; g[x][y]='0'; } } } if(!f) { s.push(index); return false; } } return true; } int main() { int Case,i,j; scanf("%d",&Case); getchar(); while(Case--) { memset(row,0,sizeof row); memset(col,0,sizeof col); memset(square,0,sizeof square); rep(i,1,N) { rep(j,1,N) { scanf("%c",&g[i][j]); if(g[i][j]!='0') { row[i][g[i][j]-'0']=true; col[j][g[i][j]-'0']=true; square[getsquare(i,j)][g[i][j]-'0']=true; }else { s.push((i-1)*9+j-1); } } getchar(); } if(solve()) rep(i,1,N) { rep(j,1,N) printf("%c",g[i][j]); printf("\n"); } } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator