Lang:G++
Edit12345678910111213141516171819202122232425262728293031#pragma comment(linker, "/STACK:102400000,102400000")#include <iostream>#include <cstdio>#include <cstring>using namespace std;int t;int sudo[10][10];bool row[10][10];bool col[10][10];bool block[10][10];bool dfs(int x,int y){if(x == 9) return true;if(y == 9) return dfs(x+1, 0);if(sudo[x][y]) return dfs(x, y+1);int k = 3*(x/3) + y/3 + 1;for(int i = 1; i <= 9; i++)if(!row[x][i] && !col[y][i] && !block[k][i]){sudo[x][y] = i;row[x][i] = true;col[y][i] = true;block[k][i] = true;if(dfs(x,y+1)) return true;else{sudo[x][y] = 0;row[x][i] = false;col[y][i] = false;block[k][i] = false;}