Solutions/Mr.K's Solution
PKU 2260. Error Correction. [판정:AC]
Milkskin
2010. 9. 7. 23:43
간만에 AC받도록 협조(?)해준 스파킹군에게 심심한 감사를 표하며 ㅋㅋ
원리는 간단합니다
모든 "행의 합"들과 "열의 합"들이 짝수가 나오는 경우
와
"행의 합"들 중 홀수가 1개, "열의 합"들 중 홀수가 1개 나오는 경우
를 제외하고는 전부 "Corrupt"를 출력해주시면 되겠습니다 :)
#includeusing namespace std; int main() { int size = 1; int rowsum[99]; int colsum[99]; while(1) { int i, j; int temp; int rowodds, colodds; scanf( "%d", &size ); if( size == 0 ) { break; } for( i = 0; i < size; i++ ) { rowsum[i] = 0; colsum[i] = 0; } for( i = 0; i < size*size; i++ ) { scanf( "%d", &temp ); rowsum[ i/size ] += temp; colsum[ i%size ] += temp; } rowodds = 0; colodds = 0; for( i = 0; i < size; i++ ) { if( rowsum[i] % 2 == 1 ) { rowodds++; } } if( rowodds > 1 ) { printf( "Corrupt\n" ); } else { for( i = 0; i < size; i++ ) { if( colsum[i] % 2 == 1 ) { colodds++; } } if( colodds != rowodds ) { printf( "Corrupt\n" ); } else if( rowodds == 0 ) { printf( "OK\n" ); } else { for( i = 0; i < size; i++ ) { if( rowsum[i] % 2 == 1 ) { break; } } for( j = 0; j < size; j++ ) { if( colsum[j] % 2 == 1 ) { break; } } printf( "Change bit (%d,%d)\n", i+1, j+1 ); } } } return 0; }