| ||||||||||
| 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 | |||||||||
WA两天了, 不知道错哪了,谁能帮忙看看 ?#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