首页 > 代码库 > 蓝桥--兰顿蚂蚁[模拟]

蓝桥--兰顿蚂蚁[模拟]

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T125

题目大意:

  一直蚂蚁在正方形黑白格子中,他可以向四个方向移动,定义是:如果当前在黑块中则向右移动一格,如果在白块中向左移动一格(移动的同时改变了头的方向)。

输入输出自看题目。

解题思路:

  直接模拟就好,举一个例子:若当前头朝上且在黑格子中,则:头改变方向向右,同时修改当前格子的颜色,再向右移动一格蚂蚁的位置即可。

  【注意修改格子后再改变其位置】

AC Code:

 1 #include<stdio.h>
 2 int main() {
 3     int n,m,x,y,k,i,j,arr[100][100];
 4     char s;
 5     while(scanf("%d%d",&n,&m)!=EOF) {
 6         for(i=0; i<n; i++)
 7             for(j=0; j<m; j++)
 8                 scanf("%d",&arr[i][j]);
 9         scanf("%d %d %c %d",&x,&y,&s,&k);
10         for(; k>0; k--) {
11             switch(s) {
12             case U: {if(arr[x][y])s=R,arr[x][y]=0,y+=1;else s=L,arr[x][y]=1,y-=1;}break;
13             case D: {if(arr[x][y])s=L,arr[x][y]=0,y-=1;else s=R,arr[x][y]=1,y+=1;}break;
14             case L: {if(arr[x][y])s=U,arr[x][y]=0,x-=1;else s=D,arr[x][y]=1,x+=1;}break;
15             case R: {if(arr[x][y])s=D,arr[x][y]=0,x+=1;else s=U,arr[x][y]=1,x-=1;}break;
16             }
17         }
18         printf("%d %d\n",x,y);
19     }
20     return 0;
21 }

 

蓝桥--兰顿蚂蚁[模拟]