這樣的水題,打出這麼爛的代碼,我有種想死的衝動
#include <stdio.h>
char board[4][5];
int n, max;
int rookX[10][2], rookY[10][2];
void rookMax(int row, int column, int num)
{
int i, j, ok, m, next = 0;
if (column >= n) {
if (++row < n) {
for (i = 0; i < n && board[row][i] != '.'; i++)
;
rookMax(row, i, num);
}
else
if (num > max)
max =num;
return;
}
for (m = column; m < n && board[row][m] != 'X'; m++)
;
for (i = column; i < m; i++) {
if (board[row][i] == '.') {
next = 1;
for (j = row-1, ok = 1; j >= 0 && board[j][i] != 'X'; j--)
if (board[j][i] == 'R') {
ok = 0;
break;
}
if (ok) {
board[row][i] = 'R';
for (j = m+1; j < n && board[row][j] != '.'; j++)
;
rookMax(row, j, num+1);
board[row][i] = '.';
}
}
}
if (next) {
for (j = m+1; j < n && board[row][j] != '.'; j++)
;
rookMax(row, j, num);
}
}
int main()
{
int i;
while (scanf("%d", &n), n) {
for (i = 0; i < n; i++)
scanf("%s", board[i]);
max= 0;
for (i = 0; i < n && board[0][i] != '.'; i++)
;
rookMax(0, i, 0);
printf("%d\n", max);
}
}