| ||||||||||
| 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 | |||||||||
终于过了! 咳!In Reply To:WA两天了, 不知道错哪了,谁能帮忙看看 ? Posted by:nuciedh at 2007-08-16 12:51:08 > #include <cstdio>
> #include <cstring>
> #include <algorithm>
> using namespace std;
>
> char c[9][9];
> int state, x, y;
> bool canmove;
>
> void print ()
> {
> int i, j;
> for (i = 1; i <= 8; i ++)
> {
> for (j = 0; j < 8; j ++)
> {
> printf ("%c", c[i][j]);
> }
> printf ("\n");
> }
> }
>
> void move ()
> {
> char a[10], b[10], t[20];
> int step, i, j, m, id;
> scanf ("%s", a);
>
> while (a[0] != '#')
> {
> if (strcmp(a, "move") == 0)
> {
> scanf ("%d", &step);
>
> if (step > 8) step = 8;
> m = step;
> if (m)
> {
> if (state == 0)
> {
> for (i = 1; i <= m; i ++)
> {
> id = y + i;
> for (j = id; j < 8; j ++)
> if (c[x][j] == '.') break;
> for (; j > id; j --)
> c[x][j] = c[x][j - 1], c[x][j - 1] = '.';
>
> }
> c[x][8] = '\0';
> y += step;
> if (y > 7) y = 7;
> }
> else if (state == 1)
> {
> for (i = 1; i <= m; i ++)
> {
> id = x + i;
> for (j = id; j < 9; j ++)
> if (c[j][y] == '.') break;
> for (; j > id; j --)
> c[j][y] = c[j - 1][y], c[j - 1][y] = '.';
> }
> x += step;
> if (x > 8) x = 8;
> }
> else if (state == 2)
> {
> for (i = 1; i <= m; i ++)
> {
> id = y - i;
> for (j = id; j >= 0; j --)
> if (c[x][j] == '.') break;
> for (; j > id; j ++)
> {
> if (j == -1)
> {
> c[x][j + 1] = '.';
> continue;
> }
> c[x][j] = c[x][j + 1], c[x][j + 1] = '.';
> }
> }
> y -= step;
> if (y < 0) y = 0;
> }
> else
> {
> for (i = 1; i <= m; i ++)
> {
> id = x - i;
> for (j = id; j >= 0; j --)
> if (c[j][y] == '.') break;
> for (; j < id; j ++)
> {
> if (j == -1)
> {
> c[j + 1][y] = '.';
> }
> c[j][y] = c[j + 1][y], c[j + 1][y] == '.';
> }
> }
> x -= step;
> if (x < 0) x = 0;
> }
> }
> }
> else
> {
> scanf ("%s", b);
> if (strcmp(b, "right") == 0)
> {
> state += 1;
> if (state > 3) state = 0;
> }
> else if (strcmp (b, "left") == 0)
> {
> state -= 1;
> if (state < 0) state = 3;
> }
> else
> {
> if (state == 0) state = 2;
> else if (state == 1) state = 3;
> else if (state == 2) state = 0;
> else if (state == 3) state = 1;
> }
> }
> scanf ("%s", a);
> }
> }
>
> void solve ()
> {
> int i, j;
> for (i = 2; i < 9; i ++)
> scanf ("%s", c[i]);
> canmove = true;
> x = y = -1;
> for (i = 1; i < 9; i ++)
> {
> for (j = 0; j < 8 && x < 0; j ++)
> {
> if (c[i][j] == '>')
> {
> x = i; y = j;
> state = 0;
> c[i][j] = '.';
> }
> else if (c[i][j] == 'v')
> {
> x = i; y = j;
> state = 1;
> c[i][j] = '.';
> }
> else if (c[i][j] == '<')
> {
> x = i; y = j;
> state = 2;
> c[i][j] = '.';
> }
> else if (c[i][j] == '^')
> {
> x = i; y = j;
> state = 3;
> c[i][j] = '.';
> }
> }
> }
> move ();
> if (state == 0) c[x][y] = '>';
> else if (state == 1) c[x][y] = 'v';
> else if (state == 2) c[x][y] = '<';
> else c[x][y] = '^';
> print ();
> printf ("\n");
> }
>
> int main ()
> {
> while (EOF != scanf ("%s", c[1]), c[1][0] != '-')
> solve ();
> return 0;
> }
>
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator