题目如下:
https://www.codingame.com/ide/puzzle/shadows-of-the-knight-episode-1
感觉特别有意思
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
/**
* Auto-generated code below aims at helping you parse
* the standard input according to the problem statement.
**/
int main()
{
// width of the building.
int W;
// height of the building.
int H;
scanf("%d%d", &W, &H);
// maximum number of turns before game over.
W--;
H--;
int s=H,x=0,z=W,y=0;
int N;
scanf("%d", &N);
int X0;
int Y0;
scanf("%d%d", &X0, &Y0);
// game loop
while (1) {
// the direction of the bombs from batman's current location (U, UR, R, DR, D, DL, L or UL)
char bomb_dir[4];
scanf("%s", bomb_dir);
int i=strlen(bomb_dir);
if(i==1)
{
switch(bomb_dir[0])
{
case 'D':x=Y0;Y0+=(int)ceil((s-x)/2.0);break;
case 'R':y=X0;X0+=(int)ceil((z-y)/2.0);break;
case 'U':s=Y0;Y0-=(int)ceil((s-x)/2.0);break;
case 'L':z=X0;X0-=(int)ceil((z-y)/2.0);break;
}
printf("%d %d\n",X0,Y0);
}
else
{
switch(bomb_dir[0])
{
case 'D':x=Y0;Y0+=(int)ceil((s-x)/2.0);break;
case 'R':y=X0;X0+=(int)ceil((z-y)/2.0);break;
case 'U':s=Y0;Y0-=(int)ceil((s-x)/2.0);break;
case 'L':z=X0;X0-=(int)ceil((z-y)/2.0);break;
}
switch(bomb_dir[1])
{
case 'D':x=Y0;Y0+=(int)ceil((s-x)/2.0);break;
case 'R':y=X0;X0+=(int)ceil((z-y)/2.0);break;
case 'U':s=Y0;Y0-=(int)ceil((s-x)/2.0);break;
case 'L':z=X0;X0-=(int)ceil((z-y)/2.0);break;
}
printf("%d %d\n",X0,Y0);
}
// Write an action using printf(). DON'T FORGET THE TRAILING \n
// To debug: fprintf(stderr, "Debug messages...\n");
// the location of the next window Batman should jump to.
}
return 0;
}
^ - ^