首页 > 代码库 > 炸弹人
炸弹人
炸弹人只能在一个位置投放炸弹,炸弹能够同时向“上下左右”四个方向同时射去,但是不能穿墙,求炸弹人能够炸最多敌人的位置
1 import java.util.Iterator; 2 import java.util.LinkedList; 3 import java.util.Scanner; 4 import java.util.TreeSet; 5 import java.util.Scanner; 6 public class One { 7 public static int f(int x,int y,char a[][]){ 8 int num=0; 9 //向上 10 int tx=x,ty=y; 11 while(a[tx][ty]!=‘#‘){ 12 if(a[tx][ty]==‘G‘)num++; 13 tx--; 14 } 15 //向下 16 tx=x; 17 ty=y; 18 while(a[tx][ty]!=‘#‘){ 19 if(a[tx][ty]==‘G‘)num++; 20 tx++; 21 } 22 //向左 23 tx=x; 24 ty=y; 25 while(a[tx][ty]!=‘#‘){ 26 if(a[tx][ty]==‘G‘)num++; 27 ty--; 28 } 29 //向右 30 tx=x; 31 ty=y; 32 while(a[tx][ty]!=‘#‘){ 33 if(a[tx][ty]==‘G‘)num++; 34 ty++; 35 } 36 return num; 37 38 } 39 public static void main(String ags[]){ 40 int n,m,p,q;//n,m为地图行列,p,q为小人游戏开始时的数组位置 41 int d[][]={{0,1},{1,0},{0,-1},{-1,0}};//方向移动控制 42 LinkedList<Note> list=new LinkedList<Note>();//用于存放所有可能达到的点 43 Scanner scanner=new Scanner(System.in); 44 System.out.println("请输入地图行列:"); 45 n=scanner.nextInt(); 46 m=scanner.nextInt(); 47 char a[][]=new char[n][m];//存放地图 48 int book[][]=new int[n][m];//记录某点是否已经走过了 49 System.out.println("请输入地图:"); 50 Scanner in=new Scanner(System.in); 51 for(int i=0;i<n;i++){ 52 for(int j=0;j<m;j++){ 53 a[i][j]=in.next().charAt(0); 54 } 55 System.out.println(""); 56 } 57 System.out.println("请输入小人初始位置:"); 58 p=scanner.nextInt(); 59 q=scanner.nextInt(); 60 61 //开始试探所有可能的点 62 int tx,ty,max=0,m1=0,m2=0;//tx,ty为当前点扩展的数组行列号,max为记录当前最大能消灭敌人的数,m1,m2用来记录能消灭敌人最大数目的位置 63 list.add(new Note(p,q,f(p,q,a)));//将小人初始位置放入链表 64 book[p][q]=1; 65 while(!list.isEmpty()){//如果连比较不为空 66 for(int k=0;k<=3;k++){//四个方向探索 67 tx=list.getFirst().x+d[k][0]; 68 ty=list.getFirst().y+d[k][1]; 69 if(a[tx][ty]==‘.‘&&book[tx][ty]==0){//如果该点为空的(即小人可以到达的),则将该点加入链表,并且能消灭的敌人数与max比较 70 book[tx][ty]=1; 71 list.add(new Note(tx,ty,f(tx,ty,a))); 72 if(list.getFirst().n>max){ 73 max=list.getFirst().n; 74 m1=list.getFirst().x; 75 m2=list.getFirst().y; 76 } 77 } 78 } 79 list.removeFirst(); 80 } 81 System.out.println("位置"+m1+","+m2+"能消灭最多敌人,数目为:"+max); 82 } 83 } 84 class Note{ 85 int x,y,n; 86 Note(int x,int y,int n){ 87 this.x=x; 88 this.y=y; 89 this.n=n; 90 } 91 }
运行如下图所示:
炸弹人
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。