首页 > 代码库 > HDU 4121 Xiangqi
HDU 4121 Xiangqi
模拟吧,算是。。。
被这个题wa到哭,真是什么都不想说了。。。上代码
1 #include <iostream> 2 #include <cstring> 3 using namespace std; 4 5 struct node { 6 int x,y; 7 char c; 8 }q[10]; 9 10 int main (){ 11 int n,x,y; 12 int kase=0; 13 int map[30][30]; 14 while (cin>>n>>x>>y){ 15 if (n+x+y==0) 16 break ; 17 memset (map,0,sizeof map); 18 for (int i=0;i<n;i++){ 19 cin>>q[i].c>>q[i].x>>q[i].y; 20 map[q[i].x][q[i].y]=2; 21 } 22 int flag=1; 23 for (int i=0;i<n;i++){ 24 if (q[i].c==‘G‘){ 25 for (int j=q[i].x-1;j>0;j--){ 26 if (map[j][q[i].y]==2||map[j][q[i].y]==3){ 27 map[j][q[i].y]=3; 28 break ; 29 } 30 if (j==x&&q[i].y==y){ 31 flag=0; 32 break ; 33 } 34 map[j][q[i].y]=1; 35 } 36 } 37 else if (q[i].c==‘R‘){ 38 for (int j=q[i].x-1;j>0;j--){ 39 if (map[j][q[i].y]==2||map[j][q[i].y]==3){ 40 map[j][q[i].y]=3; 41 break ; 42 } 43 map[j][q[i].y]=1; 44 } 45 for (int j=q[i].x+1;j<20;j++){ 46 if (map[j][q[i].y]==2||map[j][q[i].y]==3){ 47 map[j][q[i].y]=3; 48 break ; 49 } 50 map[j][q[i].y]=1; 51 } 52 for (int j=q[i].y-1;j>0;j--){ 53 if (map[q[i].x][j]==2||map[q[i].x][j]==3){ 54 map[q[i].x][j]=3; 55 break ; 56 } 57 map[q[i].x][j]=1; 58 } 59 for (int j=q[i].y+1;j<20;j++){ 60 if (map[q[i].x][j]==2||map[q[i].x][j]==3){ 61 map[q[i].x][j]=3; 62 break ; 63 } 64 map[q[i].x][j]=1; 65 } 66 } 67 else if (q[i].c==‘H‘){ 68 if (map[q[i].x+1][q[i].y]!=2&&map[q[i].x+1][q[i].y]!=3){ 69 map[q[i].x+2][q[i].y+1]=map[q[i].x+2][q[i].y+1]==2||map[q[i].x+2][q[i].y+1]==3?3:1; 70 map[q[i].x+2][q[i].y-1]=map[q[i].x+2][q[i].y-1]==2||map[q[i].x+2][q[i].y-1]==3?3:1; 71 } 72 if (q[i].x>1&&map[q[i].x-1][q[i].y]!=2&&map[q[i].x-1][q[i].y]!=3){ 73 map[q[i].x-2][q[i].y+1]=map[q[i].x-2][q[i].y+1]==2||map[q[i].x-2][q[i].y+1]==3?3:1; 74 map[q[i].x-2][q[i].y-1]=map[q[i].x-2][q[i].y-1]==2||map[q[i].x-2][q[i].y-1]==3?3:1; 75 } 76 if (map[q[i].x][q[i].y+1]!=2&&map[q[i].x][q[i].y+1]!=3){ 77 map[q[i].x+1][q[i].y+2]=map[q[i].x+1][q[i].y+2]==2||map[q[i].x+1][q[i].y+2]==3?3:1; 78 map[q[i].x-1][q[i].y+2]=map[q[i].x-1][q[i].y+2]==2||map[q[i].x-1][q[i].y+2]==3?3:1; 79 } 80 if (q[i].y>1&&map[q[i].x][q[i].y-1]!=2&&map[q[i].x][q[i].y-1]!=3){ 81 map[q[i].x+1][q[i].y-2]=map[q[i].x+1][q[i].y-2]==2||map[q[i].x+1][q[i].y-2]==3?3:1; 82 map[q[i].x-1][q[i].y-2]=map[q[i].x-1][q[i].y-2]==2||map[q[i].x-1][q[i].y-2]==3?3:1; 83 } 84 } 85 else { 86 int temp=0; 87 for (int j=q[i].x+1;j<20;j++){ 88 if (temp==1&&map[j][q[i].y]==0) 89 map[j][q[i].y]=1; 90 if (map[j][q[i].y]==2||map[j][q[i].y]==3) 91 temp++; 92 if (temp==2){ 93 map[j][q[i].y]=3; 94 break ; 95 } 96 } 97 temp=0; 98 for (int j=q[i].x-1;j>0;j--){ 99 if (temp==1&&map[j][q[i].y]==0)100 map[j][q[i].y]=1;101 if (map[j][q[i].y]==2||map[j][q[i].y]==3)102 temp++;103 if (temp==2){104 map[j][q[i].y]=3;105 break ;106 }107 }108 temp=0;109 for (int j=q[i].y-1;j>0;j--){110 if (temp==1&&map[q[i].x][j]==0)111 map[q[i].x][j]=1;112 if (map[q[i].x][j]==2||map[q[i].x][j]==3)113 temp++;114 if (temp==2){115 map[q[i].x][j]=3;116 break ;117 }118 }119 temp=0;120 for (int j=q[i].y+1;j<20;j++){121 if (temp==1&&map[q[i].x][j]==0)122 map[q[i].x][j]=1;123 if (map[q[i].x][j]==2||map[q[i].x][j]==3)124 temp++;125 if (temp==2){126 map[q[i].x][j]=3;127 break ;128 }129 }130 }131 }132 if (map[x][y]==0||map[x][y]==2)133 flag=0;134 if (x<3)135 if (map[x+1][y]==0||map[x+1][y]==2)136 flag=0;137 if (y<6)138 if (map[x][y+1]==0||map[x][y+1]==2)139 flag=0;140 if (x>1)141 if (map[x-1][y]==0||map[x-1][y]==2)142 flag=0;143 if (y>4)144 if (map[x][y-1]==0||map[x][y-1]==2)145 flag=0;146 147 //for (int i=1;i<=10;i++){148 // for (int j=1;j<=10;j++)149 // cout<<map[i][j];150 // cout<<endl;151 //}152 153 //if (kase++)154 // cout<<endl;155 if (flag)156 cout<<"YES"<<endl;157 else cout<<"NO"<<endl;158 }159 return 0;160 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。