範例程式碼 uva10800

//uva10800
#include <iostream>
#include <string>

using namespace std;

int main() {
  char table[106][55];

  int now, up, down, len;
  int N, cnt = 0;
  cin >> N;
  string s;

  while (N--) {
    cin >> s;
    now = up = down = 53;
    len = s.length();
    for (int i = 0; i < 106; ++i) {
      for (int j = 0; j < 54; ++j)
        table[i][j] = ' ';
      table[i][54] = '\0';
    }

    for (int i = 0; i < len; ++i) {
      switch (s[i]) {
      case 'R':
        if (i && s[i - 1] == 'R')
          ++now;
        table[now][i] = '/';
        break;
      case 'F':
        if (i && s[i - 1] != 'R')
          --now;
        table[now][i] = '\\';
        break;
      case 'C':
        if (i && s[i - 1] == 'R')
          ++now;
        table[now][i] = '_';
        break;
      }
      if (now > up)
        up = now;
      if (now < down)
        down = now;
    }
    //消後面空白
    for (int i = up; i >= down; --i) {
      for (int j = len; j > 0; --j) {
        if (table[i][j] == ' ')
          table[i][j] = '\0';
        else
          break;
      }
    }

    cout << "Case #" << ++cnt << ":" << endl;
    for (int i = up; i >= down; --i) {
      cout << "| ";
      cout << table[i] << endl;
    }
    cout << '+';
    for (int i = 0; i < len + 2; ++i)
      cout << '-';
    cout << endl << endl;
  }
}