POJ2632
来源:互联网 发布:mac怎么进硬件检测模式 编辑:程序博客网 时间:2024/05/21 17:33
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct _ROBOT_
{
int x;
int y;
char c_pos;
int i_pos;
}Robot;
typedef struct _INSTRUCTIONS_
{
int ID;
char action;
int repeat;
}Instruction;
int main()
{
int K, A, B, N, M;
Robot r[100];
Instruction ins[100];
int i, j, k;
int temp1 = 0;
scanf("%d", &K);
while (K--)
{
memset(r, 0, sizeof(r));
memset(ins, 0, sizeof(ins));
scanf("%d %d", &A, &B);
if (A < 0 || A > 100 || B < 0 || B > 100)
{
return -1;
}
scanf("%d %d", &N, &M);
if (N < 0 || N > 100 || M < 0 || M > 100)
{
return -1;
}
for (i = 1; i <= N; i++)
{
scanf("%d %d %c", &r[i].x, &r[i].y, &r[i].c_pos);
switch(r[i].c_pos)
{
case 'N':
r[i].i_pos = 0;
break;
case 'E':
r[i].i_pos = 1;
break;
case 'S':
r[i].i_pos = 2;
break;
case 'W':
r[i].i_pos = 3;
break;
default:
printf("error\n");
break;
}
}
for (i = 1; i <= M; i++)
scanf("%d %c %d", &ins[i].ID, &ins[i].action, &ins[i].repeat);
for(i = 1; i <= M; i++)
{
temp1 = 0;
switch(ins[i].action)
{
case 'L':
{
if(ins[i].repeat%4 == 0)
r[ins[i].ID].i_pos = r[ins[i].ID].i_pos;
else if(ins[i].repeat%4 == 1)
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos -1)%4;
else if(ins[i].repeat%4 == 2)
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos - 2)%4;
else
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos - 3)%4;
break;
}
case 'R':
{
if(ins[i].repeat%4 == 0)
r[ins[i].ID].i_pos = r[ins[i].ID].i_pos;
else if(ins[i].repeat%4 == 1)
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos + 1)%4;
else if(ins[i].repeat%4 == 2)
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos + 2)%4;
else
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos + 3)%4;
break;
}
case 'F':
{
switch(r[ins[i].ID].i_pos)
{
case 0:
for (j = 1; j <= ins[i].repeat; j++)
{
r[ins[i].ID].y++;
if (r[ins[i].ID].y > B)
{
printf("Robot %d crashes into the wall\n", ins[i].ID);
temp1 = 1;
}
if(!temp1)
{
for (k = 1; k <= N; k++)
{
if (k == ins[i].ID)
{
continue;
}
if ( (r[ins[i].ID].x == r[k].x) && (r[ins[i].ID].y == r[k].y) )
{
printf("Robot %d crashes into robot %d\n", ins[i].ID, k);
temp1 = 1;
break;
}
}
}
if(temp1)
break;
}
break;
case 1:
for (j = 1; j <= ins[i].repeat; j++)
{
r[ins[i].ID].x++;
if (r[ins[i].ID].x > A)
{
printf("Robot %d crashes into the wall\n", ins[i].ID);
temp1 = 1;
}
if (!temp1)
{
for (k = 1; k <= N; k++)
{
if (k == ins[i].ID)
{
continue;
}
if ( (r[ins[i].ID].x == r[k].x) && (r[ins[i].ID].y == r[k].y) )
{
printf("Robot %d crashes into robot %d\n", ins[i].ID, k);
temp1 = 1;
break;
}
}
}
if(temp1)
break;
}
break;
case 2:
for (j = 1; j <= ins[i].repeat; j++)
{
r[ins[i].ID].y--;
if (r[ins[i].ID].y < 0)
{
printf("Robot %d crashes into the wall\n", ins[i].ID);
temp1 = 1;
}
if (!temp1)
{
for (k = 1; k <= N; k++)
{
if (k == ins[i].ID)
{
continue;
}
if ( (r[ins[i].ID].x == r[k].x) && (r[ins[i].ID].y == r[k].y) )
{
printf("Robot %d crashes into robot %d\n", ins[i].ID, k);
temp1 = 1;
}
}
}
if(temp1)
break;
}
break;
case 3:
for (j = 1; j <= ins[i].repeat; j++)
{
r[ins[i].ID].x--;
if (r[ins[i].ID].x < 0)
{
printf("Robot %d crashes into the wall\n", ins[i].ID);
temp1 = 1;
}
if (!temp1)
{
for (k = 1; k <= N; k++)
{
if (k == ins[i].ID)
{
continue;
}
if ( (r[ins[i].ID].x == r[k].x) && (r[ins[i].ID].y == r[k].y) )
{
printf("Robot %d crashes into robot %d\n", ins[i].ID, k);
temp1 = 1;
}
}
}
if(temp1)
break;
}
break;
}
break;
}
}
if(temp1)
break;
}
if(!temp1)
{
printf("OK\n");
}
}
return 0;
}
#include <stdlib.h>
#include <math.h>
typedef struct _ROBOT_
{
int x;
int y;
char c_pos;
int i_pos;
}Robot;
typedef struct _INSTRUCTIONS_
{
int ID;
char action;
int repeat;
}Instruction;
int main()
{
int K, A, B, N, M;
Robot r[100];
Instruction ins[100];
int i, j, k;
int temp1 = 0;
scanf("%d", &K);
while (K--)
{
memset(r, 0, sizeof(r));
memset(ins, 0, sizeof(ins));
scanf("%d %d", &A, &B);
if (A < 0 || A > 100 || B < 0 || B > 100)
{
return -1;
}
scanf("%d %d", &N, &M);
if (N < 0 || N > 100 || M < 0 || M > 100)
{
return -1;
}
for (i = 1; i <= N; i++)
{
scanf("%d %d %c", &r[i].x, &r[i].y, &r[i].c_pos);
switch(r[i].c_pos)
{
case 'N':
r[i].i_pos = 0;
break;
case 'E':
r[i].i_pos = 1;
break;
case 'S':
r[i].i_pos = 2;
break;
case 'W':
r[i].i_pos = 3;
break;
default:
printf("error\n");
break;
}
}
for (i = 1; i <= M; i++)
scanf("%d %c %d", &ins[i].ID, &ins[i].action, &ins[i].repeat);
for(i = 1; i <= M; i++)
{
temp1 = 0;
switch(ins[i].action)
{
case 'L':
{
if(ins[i].repeat%4 == 0)
r[ins[i].ID].i_pos = r[ins[i].ID].i_pos;
else if(ins[i].repeat%4 == 1)
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos -1)%4;
else if(ins[i].repeat%4 == 2)
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos - 2)%4;
else
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos - 3)%4;
break;
}
case 'R':
{
if(ins[i].repeat%4 == 0)
r[ins[i].ID].i_pos = r[ins[i].ID].i_pos;
else if(ins[i].repeat%4 == 1)
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos + 1)%4;
else if(ins[i].repeat%4 == 2)
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos + 2)%4;
else
r[ins[i].ID].i_pos = (r[ins[i].ID].i_pos + 3)%4;
break;
}
case 'F':
{
switch(r[ins[i].ID].i_pos)
{
case 0:
for (j = 1; j <= ins[i].repeat; j++)
{
r[ins[i].ID].y++;
if (r[ins[i].ID].y > B)
{
printf("Robot %d crashes into the wall\n", ins[i].ID);
temp1 = 1;
}
if(!temp1)
{
for (k = 1; k <= N; k++)
{
if (k == ins[i].ID)
{
continue;
}
if ( (r[ins[i].ID].x == r[k].x) && (r[ins[i].ID].y == r[k].y) )
{
printf("Robot %d crashes into robot %d\n", ins[i].ID, k);
temp1 = 1;
break;
}
}
}
if(temp1)
break;
}
break;
case 1:
for (j = 1; j <= ins[i].repeat; j++)
{
r[ins[i].ID].x++;
if (r[ins[i].ID].x > A)
{
printf("Robot %d crashes into the wall\n", ins[i].ID);
temp1 = 1;
}
if (!temp1)
{
for (k = 1; k <= N; k++)
{
if (k == ins[i].ID)
{
continue;
}
if ( (r[ins[i].ID].x == r[k].x) && (r[ins[i].ID].y == r[k].y) )
{
printf("Robot %d crashes into robot %d\n", ins[i].ID, k);
temp1 = 1;
break;
}
}
}
if(temp1)
break;
}
break;
case 2:
for (j = 1; j <= ins[i].repeat; j++)
{
r[ins[i].ID].y--;
if (r[ins[i].ID].y < 0)
{
printf("Robot %d crashes into the wall\n", ins[i].ID);
temp1 = 1;
}
if (!temp1)
{
for (k = 1; k <= N; k++)
{
if (k == ins[i].ID)
{
continue;
}
if ( (r[ins[i].ID].x == r[k].x) && (r[ins[i].ID].y == r[k].y) )
{
printf("Robot %d crashes into robot %d\n", ins[i].ID, k);
temp1 = 1;
}
}
}
if(temp1)
break;
}
break;
case 3:
for (j = 1; j <= ins[i].repeat; j++)
{
r[ins[i].ID].x--;
if (r[ins[i].ID].x < 0)
{
printf("Robot %d crashes into the wall\n", ins[i].ID);
temp1 = 1;
}
if (!temp1)
{
for (k = 1; k <= N; k++)
{
if (k == ins[i].ID)
{
continue;
}
if ( (r[ins[i].ID].x == r[k].x) && (r[ins[i].ID].y == r[k].y) )
{
printf("Robot %d crashes into robot %d\n", ins[i].ID, k);
temp1 = 1;
}
}
}
if(temp1)
break;
}
break;
}
break;
}
}
if(temp1)
break;
}
if(!temp1)
{
printf("OK\n");
}
}
return 0;
}
- POJ2632
- POJ2632
- poj2632
- POJ2632
- POJ2632
- poj2632
- poj2632
- POJ2632
- poj2632
- poj2632
- poj2632--模拟
- poj2632(模拟)
- Crashing Robots POJ2632
- poj2632 Crashing Robots
- POJ2632--Crashing Robots--模拟
- POJ2632 Crashing Robots
- poj2632--Crashing Robots
- POJ2632 Crashing Robots
- UA信息
- IE中使用Google Chrome Frame运行HTML 5
- POJ 2773 欧拉函数
- erlang lists 系列函数功能与用法详解(共68个函数)
- IOS-处理异常崩溃(摘自iPhone Tutorials)
- POJ2632
- Myeclipse8.5搭建jbpm4.4的开发环境
- android之Notification通知
- 【Flex】IE中清除swf缓存
- JAVA实现输出100到200之间的素数
- 转自看雪——Hackshield内幕(thisIs)
- 删除已排序数组中的重复数
- JNI使用注意与避免内存泄露总结
- 缺少mfc运行时库