| ||||||||||
| 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 | |||||||||
过了N组数据,还是WA,不知道什么问题,麻烦大牛们帮忙检查一下........
#include<iostream>
using namespace std;
struct rob{
int x;
int y;
char direction;
} robot[110];
struct operating{
int number;
char operation;
int repeat;
} oper[110];
int main(){
int case_num, length, width, rob_num, ins_num;
int i, j, m, n, counter;
int number[110];
bool flag1, flag2, flag3;
cin>>case_num;
for(i=0; i<case_num; i++){
cin>>length>>width;
int **matrix = new int *[length];
for(j=0; j<length; j++){
matrix[j] = new int[width];
}
counter=0;
memset(matrix, 0, sizeof(matrix));
memset(number, 0, sizeof(number));
cin>>rob_num>>ins_num;
for(j=1; j<=rob_num; j++){
cin>>robot[j].x>>robot[j].y>>robot[j].direction;
}
for(j=1; j<=ins_num; j++){
cin>>oper[j].number>>oper[j].operation>>oper[j].repeat;
}
flag2 = true;
flag3 = true;
for(j=1; j<=ins_num; j++){
flag1 = false;
if(oper[j].operation=='L' && robot[oper[j].number].direction=='E' && (oper[j].repeat%4==0)){
robot[oper[j].number].direction = 'E';
flag1 = true;
}
if(flag1==true){
counter++; // 成功执行instruction
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='S' && (oper[j].repeat%4==0)){
robot[oper[j].number].direction = 'S';
flag1 = true;
}
if(flag1==true){
counter++; // 成功执行instruction
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='W' && (oper[j].repeat%4==0)){
robot[oper[j].number].direction = 'W';
flag1 = true;
}
if(flag1==true){
counter++; // 成功执行instruction
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='N' && (oper[j].repeat%4==0)){
robot[oper[j].number].direction = 'N';
flag1 = true;
}
if(flag1==true){
counter++; // 成功执行instruction
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='E' && (oper[j].repeat%4==1)){
robot[oper[j].number].direction = 'N';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='S' && (oper[j].repeat%4==1)){
robot[oper[j].number].direction = 'E';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='W' && (oper[j].repeat%4==1)){
robot[oper[j].number].direction = 'S';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='N' && (oper[j].repeat%4==1)){
robot[oper[j].number].direction = 'W';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='E' && (oper[j].repeat%4==2)){
robot[oper[j].number].direction = 'W';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='S' && (oper[j].repeat%4==2)){
robot[oper[j].number].direction = 'N';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='W' && (oper[j].repeat%4==2)){
robot[oper[j].number].direction = 'E';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='N' && (oper[j].repeat%4==2)){
robot[oper[j].number].direction = 'S';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='E' && (oper[j].repeat%4==3)){
robot[oper[j].number].direction = 'S';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='S' && (oper[j].repeat%4==3)){
robot[oper[j].number].direction = 'W';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='W' && (oper[j].repeat%4==3)){
robot[oper[j].number].direction = 'N';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='L' && robot[oper[j].number].direction=='N' && (oper[j].repeat%4==3)){
robot[oper[j].number].direction = 'E';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='E' && (oper[j].repeat%4==0)){
robot[oper[j].number].direction = 'E';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='S' && (oper[j].repeat%4==0)){
robot[oper[j].number].direction = 'S';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='W' && (oper[j].repeat%4==0)){
robot[oper[j].number].direction = 'W';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='N' && (oper[j].repeat%4==0)){
robot[oper[j].number].direction = 'N';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='E' && (oper[j].repeat%4==1)){
robot[oper[j].number].direction = 'S';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='S' && (oper[j].repeat%4==1)){
robot[oper[j].number].direction = 'W';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='W' && (oper[j].repeat%4==1)){
robot[oper[j].number].direction = 'N';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='N' && (oper[j].repeat%4==1)){
robot[oper[j].number].direction = 'E';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='E' && (oper[j].repeat%4==2)){
robot[oper[j].number].direction = 'W';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='S' && (oper[j].repeat%4==2)){
robot[oper[j].number].direction = 'N';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='W' && (oper[j].repeat%4==2)){
robot[oper[j].number].direction = 'E';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='N' && (oper[j].repeat%4==2)){
robot[oper[j].number].direction = 'S';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='E' && (oper[j].repeat%4==3)){
robot[oper[j].number].direction = 'N';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='S' && (oper[j].repeat%4==3)){
robot[oper[j].number].direction = 'E';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='W' && (oper[j].repeat%4==3)){
robot[oper[j].number].direction = 'S';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='R' && robot[oper[j].number].direction=='N' && (oper[j].repeat%4==3)){
robot[oper[j].number].direction = 'W';
flag1 = true;
}
if(flag1==true){
counter++;
continue;
}
if(oper[j].operation=='F' && robot[oper[j].number].direction=='E'){
for(m=1; m<=oper[j].repeat; m++){
robot[oper[j].number].x++; // 移动
if(robot[oper[j].number].x > length){ // 撞墙
cout<<"Robot "<<oper[j].number<<" crashes into the wall"<<endl;
flag2 = false;
break;
}
n=0;
for(n=1; n<=rob_num; n++){
if(robot[oper[j].number].x==robot[n].x && robot[oper[j].number].y==robot[n].y){ // crash
if(oper[j].number==n)
continue;
cout<<"Robot "<<oper[j].number<<" crashes into robot "<<n<<endl;
flag2 = false;
break;
}
}
if(flag2==false){
flag3 = false;
break;
}
}
if(flag2==true) // 不撞墙 && 不crash
counter++;
}
if(flag3==false)
break;
if(oper[j].operation=='F' && robot[oper[j].number].direction=='S'){
for(m=1; m<=oper[j].repeat; m++){
robot[oper[j].number].y--; // 移动
if(robot[oper[j].number].x < 1){ // 撞墙
cout<<"Robot "<<oper[j].number<<" crashes into the wall"<<endl;
flag2 = false;
break;
}
n=0;
for(n=1; n<=rob_num; n++){
if(robot[oper[j].number].x==robot[n].x && robot[oper[j].number].y==robot[n].y){ // crash
if(oper[j].number==n)
continue;
cout<<"Robot "<<oper[j].number<<" crashes into robot "<<n<<endl;
flag2 = false;
break;
}
}
if(flag2==false)
break;
}
if(flag2==true) // 不撞墙 && 不crash
counter++;
}
if(flag3==false)
break;
if(oper[j].operation=='F' && robot[oper[j].number].direction=='W'){
for(m=1; m<=oper[j].repeat; m++){
robot[oper[j].number].x--; // 移动
if(robot[oper[j].number].x < 1){ // 撞墙
cout<<"Robot "<<oper[j].number<<" crashes into the wall"<<endl;
flag2 = false;
break;
}
n=0;
for(n=1; n<=rob_num; n++){
if(robot[oper[j].number].x==robot[n].x && robot[oper[j].number].y==robot[n].y){ // crash
if(oper[j].number==n)
continue;
cout<<"Robot "<<oper[j].number<<" crashes into robot "<<n<<endl;
flag2 = false;
break;
}
}
if(flag2==false){
flag3 = false;
break;
}
}
if(flag2==true) // 不撞墙 && 不crash
counter++;
}
if(flag3==false)
break;
if(oper[j].operation=='F' && robot[oper[j].number].direction=='N'){
n=0;
for(m=1; m<=oper[j].repeat; m++){
robot[oper[j].number].y++; // 移动
if(robot[oper[j].number].y > width){ // 撞墙
cout<<"Robot "<<oper[j].number<<" crashes into the wall"<<endl;
flag2 = false;
break;
}
n=0;
for(n=1; n<=rob_num; n++){
if(robot[oper[j].number].x==robot[n].x && robot[oper[j].number].y==robot[n].y){ // crash
if(oper[j].number==n)
continue;
cout<<"Robot "<<oper[j].number<<" crashes into robot "<<n<<endl;
flag2 = false;
break;
}
}
if(flag2==false)
break;
}
if(flag2==true) // 不撞墙 && 不crash
counter++;
}
if(flag3==false)
break;
//for(k=0; k<=rob_num; k++){
// if(execute[k]==false){
// flag3 = false;
// break;
// }
//}
//if(flag3==true)
// cout<<"OK"<<endl;
}
if(counter==ins_num)
cout<<"OK"<<endl;
}
//for(j=0; j<length; j++){
// delete [length]matrix[j];
// matrix[j] = NULL;
//}
//delete [width]matrix;
//matrix = NULL;
system("pause");
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator