解题思路:

思路很简单,按着题目的要求书写代码即可

注意事项:

使用数组时要注意列和行的问题,不要把列行弄混。

参考代码:

import java.util.Scanner;
public class Main {
 
 //变换蚂蚁头的方向
 public static char getHead(char fx,int color){
  char head = 0;
  if(color == 1){
   switch (fx) {
   case 'U':
    head='R';
    break;
   case 'D':
    head='L';
    break;
   case 'R':
    head='D';
    break;
   case 'L':
    head='U';
    break; 
   default:
    break;
   }
  }
  else{
   switch (fx) {
   case 'U':
    head='L';
    break;
   case 'D':
    head='R';
    break;
   case 'R':
    head='U';
    break;
   case 'L':
    head='D';
    break; 
   default:
    break;
   }
  }
  return head;
 }
 
 public static int getX(char fx, int color, int x){
  char c = getHead(fx, color);
  if(c=='U')
   return x-1;
  else if(c=='D')
   return x+1;
  else
   return x;
 }
 
 public static int gety(char fx, int color, int y){
  char c = getHead(fx, color);
  if(c=='L')
   return y-1;
  else if(c=='R')
   return y+1;
  else
   return y;
 }
 
 public static void showMap(int a[][],int m,int n){
  for(int i=0; i<m; i++){
   for(int j=0; j<n; j++){
    System.out.print(a[i][j]+" ");
   }
   System.out.println();
  }
  System.out.println("________________________");
 }
 public static void test(){
  Scanner scan = new Scanner(System.in);
  int m = scan.nextInt();
  int n = scan.nextInt();
//  int a[][] = {
//    {0,0,0,0,0,0},
//    {0,0,0,0,0,0},
//    {0,0,1,0,0,0},
//    {0,0,0,0,0,0},
//    {0,0,0,0,0,0}};
  int a[][] = new int[m][n];
  for(int i=0; i<m; i++){
   for(int j=0; j<n; j++){
    a[i][j]=scan.nextInt();
   }
  }
  int x = scan.nextInt(); //蚂蚁坐标x,y
  int y = scan.nextInt();
  String s = scan.next();
  char fx = s.charAt(0);  //方向
  int k = scan.nextInt(); //步数
  int newx,newy;
 
  for(int i=0; i<k; i++){
  
   //得到下一步
   newx = getX(fx, a[x][y], x);
   newy = gety(fx, a[x][y], y);
   
   //变换头方向
   fx = getHead(fx, a[x][y]); //得到下一步之后切记要更新fx,
            //不然fx一直是最初赋予的值
   
   //将当前方块颜色变色
   if(a[x][y]==1)
    a[x][y]=0;
   else
    a[x][y]=1;
   
   //移动蚂蚁
   x=newx;
   y=newy;
   
//   showMap(a, m, n);
  }
  System.out.println(x+" "+y);
  
 }
 public static void main(String[] args){
  test();
 }
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论