本站遷移

因為我最近租用了網路空間以及網域,
故本站已遷移至新網站~
這邊的資訊已經正在進行搬移的工作~
希望各位可以到新網站去逛XD

New Website:
http://knightzone.org/

搜尋此網誌

2011年1月27日 星期四

[Zerojudge]a016: 數獨(SUDOKU)

這題就硬爆,檢查每個部分是否符合數獨的要求即可。

P.S. 我的程式碼中寫了一個奇怪的函式check()XD""

[C++](6ms, 674KB)
#include<iostream>
using namespace std;
bool check( int i, int sudoku[9][9] )
{
int centerx = (i%3)*3+1;
int centery = (i/3)*3+1;
bool remember[10] = {0};
for( int iy = -1 ; iy <= 1 ; iy++ )
for( int ix = -1 ; ix <= 1 ; ix++ )
if( remember[sudoku[centery+iy][centerx+ix]] )
return 1;
else
remember[sudoku[centery+iy][centerx+ix]] = 1;
memset( remember, 0, sizeof(remember) );
for( int row = 0 ; row < 9 ; row++ )
if( remember[sudoku[row][i]] )
return 1;
else
remember[sudoku[row][i]] = 1;
memset( remember, 0, sizeof(remember) );
for( int col = 0 ; col < 9 ; col++ )
if( remember[sudoku[i][col]] )
return 1;
else
remember[sudoku[i][col]] = 1;
return 0;
}
int main()
{
while( 1 )
{
int sudoku[9][9] = {0};
for( int i = 0 ; i < 9 ; i++ )
for( int j = 0 ; j < 9 ; j++ )
cin >> sudoku[i][j];
if( cin.eof() )
break;
bool answer = 0;
for( int i = 0 ; i < 9 ; i++ )
answer |= check( i, sudoku );
if( answer )
cout << "no\n";
else
cout << "yes\n";
}
return 0;
}

0 意見:

張貼留言