POJ-1315

1730 단어
이런 물문제, 이렇게 엉망진창인 코드를 내니, 나는 죽고 싶은 충동이 든다.
#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
", max); } }

좋은 웹페이지 즐겨찾기