题目链接:Gym - 101492H
自己的纯暴力做法:
1 /* */ 2 # include <iostream> 3 # include <cstdio> 4 # include <cstring> 5 # include <string> 6 # include <cstdlib> 7 # include <cmath> 8 # include <ctime> 9 # include <climits> 10 # include <memory> 11 # include <functional> 12 # include <algorithm> 13 # include <bitset> 14 # include <set> 15 # include <map> 16 # include <stack> 17 # include <vector> 18 # include <deque> 19 # include <queue> 20 # include <iomanip> 21 # include <utility> 22 using namespace std; 23 24 # define lson l,m,rt<<1 25 # define rson r,m+1,rt<<1|1 26 # define lowbit(x) (x&(-x)) 27 # define lcm(a,b) (a*b/__gcd(a,b)) 28 typedef long long ll; 29 const ll mod=1e9+7; 30 const int maxn=15; 31 const double pi=acos(-1.0); 32 const int eps=1e-8; 33 34 int main() 35 { 36 char c; 37 ll x0, y0, xd, yd; 38 int flag1=-1, flag2=-1; 39 scanf("%lld %lld %c", &x0, &y0, &c); 40 scanf("%lld %lld", &xd, &yd); 41 42 ll x=xd-x0; 43 ll y=yd-y0; 44 if( x==0 && y==0 )//在原位 45 { 46 printf("0 "); 47 } 48 49 else if( x==0 && y>0 )//在上方 50 { 51 if( c=='N' ) 52 { 53 //printf("%lld ", y); 54 printf("1 "); 55 printf("A %lld ", y); 56 } 57 else if( c=='E' ) 58 { 59 printf("%d ", 3+1); 60 for(int i=0; i<3; i++ ) 61 { 62 printf("D "); 63 } 64 printf("A %lld ", y); 65 } 66 67 else if( c=='S' ) 68 { 69 printf("%d ", 2+1); 70 for(int i=0; i<2; i++ ) 71 { 72 printf("D "); 73 } 74 printf("A %lld ", y); 75 } 76 77 else if( c=='O') 78 { 79 printf("%d ", 1+1); 80 printf("D "); 81 printf("A %lld ", y); 82 } 83 } 84 85 else if( x==0 && y<0 )//在下方 86 { 87 y = -y; 88 if( c=='S') 89 { 90 printf("1 "); 91 printf("A %lld ", y); 92 } 93 94 else if( c=='E' ) 95 { 96 printf("%d ", 1+1); 97 printf("D "); 98 printf("A %lld ", y); 99 } 100 101 else if( c=='N' ) 102 { 103 printf("%d ", 2+1); 104 for(int i=0; i<2; i++ ) 105 { 106 printf("D "); 107 } 108 printf("A %lld ", y); 109 } 110 111 else if( c=='O' ) 112 { 113 printf("%d ", 3+1); 114 for(int i=0; i<3; i++ ) 115 { 116 printf("D "); 117 } 118 printf("A %lld ", y); 119 } 120 } 121 122 else if( x>0 && y==0 )//在右边 123 { 124 if( c=='E' ) 125 { 126 printf("1 "); 127 printf("A %lld ", x); 128 } 129 130 else if( c=='S' ) 131 { 132 printf("%d ", 3+1); 133 for(int i=0; i<3; i++ ) 134 { 135 printf("D "); 136 } 137 printf("A %lld ", x); 138 } 139 140 else if( c=='O' ) 141 { 142 printf("%d ", 2+1); 143 for(int i=0; i<2; i++ ) 144 { 145 printf("D "); 146 } 147 printf("A %lld ", x); 148 } 149 150 else if( c=='N' ) 151 { 152 printf("%d ", 1+1); 153 printf("D "); 154 printf("A %lld ", x); 155 } 156 } 157 158 else if(x<0 && y==0 )//在左边 159 { 160 x=-x; 161 if( c=='O' ) 162 { 163 printf("1 "); 164 printf("A %lld ", x); 165 } 166 167 else if( c=='N' ) 168 { 169 printf("%d ", 3+1); 170 for(int i=0; i<3; i++ ) 171 { 172 printf("D "); 173 } 174 printf("A %lld ", x); 175 } 176 177 else if( c=='E' ) 178 { 179 printf("%d ", 2+1); 180 for(int i=0; i<2; i++ ) 181 { 182 printf("D "); 183 } 184 printf("A %lld ", x); 185 } 186 187 else if( c=='S' ) 188 { 189 printf("%d ", 1+1); 190 printf("D "); 191 printf("A %lld ", x); 192 } 193 } 194 195 else if( x>0 && y>0 )//在右上方 196 { 197 if( c=='N' ) 198 { 199 printf("%d ", 1+1+1); 200 printf("A %lld ", y); 201 printf("D "); 202 printf("A %lld ", x); 203 } 204 205 else if( c=='E' ) 206 { 207 printf("%d ", 3+1+1); 208 printf("A %lld ", x); 209 for(int i=0; i<3; i++ ) 210 { 211 printf("D "); 212 } 213 printf("A %lld ", y); 214 } 215 216 else if( c=='S' ) 217 { 218 printf("%d ", 2+1+1+1); 219 printf("D "); 220 printf("D "); 221 printf("A %lld ", y); 222 printf("D "); 223 printf("A %lld ", x); 224 } 225 226 else if( c=='O') 227 { 228 printf("%d ", 1+1+1+1); 229 printf("D "); 230 printf("A %lld ", y); 231 printf("D "); 232 printf("A %lld ", x); 233 } 234 } 235 236 else if( x>0 && y<0 )//在右下 237 { 238 y=-y; 239 if( c=='S' ) 240 { 241 printf("%d ", 1+3+1); 242 printf("A %lld ", y); 243 for(int i=0; i<3; i++ ) 244 { 245 printf("D "); 246 } 247 printf("A %lld ", x); 248 } 249 250 if( c=='O') 251 { 252 printf("%d ", 2+1+1+1); 253 printf("D D "); 254 printf("A %lld ", x); 255 printf("D "); 256 printf("A %lld ", y); 257 } 258 259 if( c=='N' ) 260 { 261 printf("%d ", 1+1+1+1); 262 printf("D "); 263 printf("A %lld ", x); 264 printf("D "); 265 printf("A %lld ", y); 266 } 267 268 if( c=='E' ) 269 { 270 printf("%d ", 1+1+1); 271 printf("A %lld ", x); 272 printf("D "); 273 printf("A %lld ", y); 274 } 275 } 276 277 else if( x<0 && y<0 ) 278 { 279 x = -x; 280 y = -y; 281 if( c=='S' ) 282 { 283 printf("%d ", 1+1+1); 284 printf("A %lld ", y); 285 printf("D "); 286 printf("A %lld ", x); 287 } 288 289 if( c=='O' ) 290 { 291 printf("%d ", 1+3+1); 292 printf("A %lld ", x); 293 printf("D D D "); 294 printf("A %lld ", y); 295 } 296 297 if( c=='N' ) 298 { 299 printf("%d ", 2+1+1+1); 300 printf("D D "); 301 printf("A %lld ", y); 302 printf("D "); 303 printf("A %lld ", x); 304 } 305 306 if( c=='E' ) 307 { 308 printf("%d ", 1+1+1+1); 309 printf("D "); 310 printf("A %lld ", y); 311 printf("D "); 312 printf("A %lld ", x); 313 } 314 } 315 316 else if( x<0 && y>0 )//在左上 317 { 318 x=-x; 319 if( c=='N' ) 320 { 321 printf("%d ", 1+3+1); 322 printf("A %lld ", y); 323 printf("D D D "); 324 printf("A %lld ", x); 325 } 326 327 if( c=='E' ) 328 { 329 printf("%d ", 2+1+1+1); 330 printf("D D "); 331 printf("A %lld ", x); 332 printf("D "); 333 printf("A %lld ", y); 334 } 335 336 if( c=='S' ) 337 { 338 printf("%d ", 1+1+1+1); 339 printf("D "); 340 printf("A %lld ", x); 341 printf("D "); 342 printf("A %lld ", y); 343 } 344 345 if( c=='O' ) 346 { 347 printf("%d ", 1+1+1); 348 printf("A %lld ", x); 349 printf("D "); 350 printf("A %lld ", y); 351 } 352 } 353 return 0; 354 }
后来看别人的代码才知道“模拟”
1 /* */ 2 # include <iostream> 3 # include <cstdio> 4 # include <cstring> 5 # include <string> 6 # include <cstdlib> 7 # include <cmath> 8 # include <ctime> 9 # include <climits> 10 # include <memory> 11 # include <functional> 12 # include <algorithm> 13 # include <bitset> 14 # include <set> 15 # include <map> 16 # include <stack> 17 # include <vector> 18 # include <deque> 19 # include <queue> 20 # include <iomanip> 21 # include <utility> 22 using namespace std; 23 24 # define lson l,m,rt<<1 25 # define rson r,m+1,rt<<1|1 26 # define lowbit(x) (x&(-x)) 27 # define lcm(a,b) (a*b/__gcd(a,b)) 28 typedef long long ll; 29 const ll mod=1e9+7; 30 const int maxn=15; 31 const double pi=acos(-1.0); 32 const int eps=1e-8; 33 34 char s[]={'N', 'E', 'S', 'O', 'N', 'E', 'S'}; 35 36 int _find(char c, int k) 37 { 38 for(int i=0; s[i]!='