| ||||||||||
| 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 | |||||||||
求解答下,为什么同一段代码G++ WR,而C++ 却AC??#include <iostream>
#include <cstring>
#include <fstream>
#include <cstdio>
using namespace std;
int sudoku[9][9];
bool square[9][10];
bool checkrow[9][10];
bool checkcol[9][10];
bool isdone ;
void dfs(int i, int j)
{
if(i == 9)
{
isdone = true;
for(int i=0; i<9; i++)
{
for(int j=0; j<9; j++)
cout<<sudoku[i][j];
cout<<endl;
}
return ;
}
if(isdone) return ;
if(sudoku[i][j])
{
if(j == 8) dfs(i+1,0);
else dfs(i,j+1);
}
else
{
for(int num=1; num<10; num++)
{
int k = 3*(i/3)+j/3;
if(!checkrow[i][num] && !checkcol[j][num] && !square[k][num])
{
sudoku[i][j] = num;
checkrow[i][num] = 1;
checkcol[j][num] = 1;
square[k][num] = 1;
if( j == 8) dfs(i+1,0);
else dfs(i,j+1);
sudoku[i][j] = 0;
checkrow[i][num] = 0;
checkcol[j][num] = 0;
square[k][num] = 0;
}
}
}
}
int main()
{
int t;
//ifstream fin;
//fin.open("input.txt");
//cout<<fin.is_open()<<endl;
cin>>t;
while(t--)
{
memset(square,0,sizeof(square));
memset(checkcol,0,sizeof(checkcol));
memset(checkrow,0,sizeof(checkrow));
for(int i=0; i<9; i++)
{
char tmp[9];
cin>>tmp;
for(int j=0; j<9; j++)
{
sudoku[i][j] = tmp[j]-'0';
if(sudoku[i][j])
{
int k = 3*(i/3)+j/3;
checkrow[i][sudoku[i][j]] = 1;
checkcol[j][sudoku[i][j]] = 1;
square[k][sudoku[i][j]] = 1;
}
}
}
isdone = false;
dfs(0,0);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator