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 |
想请hawk看一下,哪组测试数据有问题,谢谢啦^^这个是源码: #include <stdio.h> #include <stdlib.h> int main() { int dt[20][20]; int textCnt; int i, j, k, m, n; char notPrint; scanf("%d", &textCnt); while(textCnt--) { //读入数据 for(i = 1; i <= 19; ++i ) { for(j = 1; j <= 19; ++j) { scanf("%d", &dt[i][j]); } } notPrint = 1; for(i = 1; i <= 19; ++i) { for(j = 1; j <= 19; ++j) { //横着找 if(dt[i][j] && j + 4 <= 19 && !(j > 1 && dt[i][j] < 0 && dt[i][j - 1] < 0)) { for(k = 1; k <= 4; ++k) { if(abs(dt[i][j]) != abs(dt[i][j + k])) { break; } } if(k == 5 && j + 5 <= 19 && abs(dt[i][j]) == abs(dt[i][j + 5])) { for(m = j + 1; m <= 19 && abs(dt[i][j]) == abs(dt[i][m]); ++m) { dt[i][m] = -1 * abs(dt[i][m]); } dt[i][j] = dt[i][j + 1]; } else if(k == 5 && (j + 5 <= 19 && abs(dt[i][j]) != abs(dt[i][j + 5]) || j + 4 == 19)) { printf("%d\n%d %d\n", abs(dt[i][j]), i, j); notPrint = 0; break; } } //竖着找 if(dt[i][j] && i + 4 <= 19 && !(i > 1 && dt[i][j] < 0 && dt[i - 1][j] < 0)) { for(k = 1; k <= 4; ++k) { if(abs(dt[i][j]) != abs(dt[i + k][j])) { break; } } if(k == 5 && i + 5 <= 19 && abs(dt[i][j]) == abs(dt[i + 5][j])) { for(m = i + 1; m <= 19 && abs(dt[i][j]) == abs(dt[m][j]); ++m) { dt[m][j] *= -1 * abs(dt[m][j]); } dt[i][j] = dt[i + 1][j]; } else if(k == 5 && (i + 5 <= 19 && abs(dt[i][j]) != abs(dt[i + 5][j]) || i + 4 == 19)) { printf("%d\n%d %d\n", abs(dt[i][j]), i, j); notPrint = 0; break; } } //斜右下找 if(dt[i][j] && i + 4 <= 19 && j + 4 <= 19 && !(i > 1 && j > 1 && dt[i][j] < 0 && dt[i - 1][j - 1] < 0)) { for(k = 1; k <= 4; ++k) { if(abs(dt[i][j]) != abs(dt[i + k][j + k])) { break; } } if(k == 5 && i + 5 <= 19 && j + 5 <= 19 && abs(dt[i][j]) == abs(dt[i + 5][j + 5])) { for(m = i + 1, n = j + 1; m <= 19 && n <= 19 && abs(dt[i][j]) == abs(dt[m][n]); ++m, ++n) { dt[m][n] = -1 * abs(dt[m][n]); } dt[i][j] = dt[i + 1][j + 1]; } else if(k == 5 && (i + 5 <= 19 && j + 5 <= 19 && abs(dt[i][j]) != abs(dt[i + 5][j + 5]) || i + 4 == 19 && j + 4 == 19)) { printf("%d\n%d %d\n", abs(dt[i][j]), i, j); notPrint = 0; break; } } //斜左下找 if(dt[i][j] && i + 4 <= 19 && j - 4 >= 0 && !(i > 1 && j <= 18 && dt[i][j] < 0 && dt[i - 1][j + 1] < 0)) { for(k = 1; k <= 4; ++k) { if(abs(dt[i][j]) != abs(dt[i + k][j - k])) { break; } } if(k == 5 && i + 5 <= 19 && j - 5 >= 0 && abs(dt[i][j]) == dt[i + 5][j - 5]) { for(m = i + 1, n = j - 1; m <= 19 && n >= 0 && abs(dt[i][j]) == abs(dt[m][n]); ++m, --n) { dt[m][n] = -1 * abs(dt[m][n]); } dt[i][j] = dt[i + 1][j - 1]; } else if(k == 5 && (i + 5 <= 19 && j - 5 >= 0 && abs(dt[i][j]) != abs(dt[i + 5][j - 5]) || i + 4 == 19 && j - 4 == 0)) { printf("%d\n%d %d\n", abs(dt[i][j]), i + 4, j - 4); notPrint = 0; break; } } } // end of for(j) if(!notPrint) { break; } } // end of for(i) if(notPrint) { printf("0\n"); } } // end of while(textCnt--) return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator