编程的两道题

青蛙走迷宫那道题
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public ArrayList<String> rtnLu(int[][] arr,int p){
ArrayList<String> list = new ArrayList<String>();
if(arr!=null&&rtnLu(arr,0,0, p, list)){
return list;
}
return list;
}
public boolean rtnLu(int[][] arr,int a,int b,int p,ArrayList<String> list){
if(p<0){
return false;
}
if(a>=arr.length||a<0){
return false;
}
if(b>=arr[0].length||b<0){
return false;
}
if(arr[a][b]==0){
return false;
}
if(a == 0 && b == arr[0].length-1){
list.add(a+","+b);
return true;
}
list.add(a+","+b);
arr[a][b] = 0;
boolean f1 = rtnLu(arr, a, b+1, p-1, list);//右
if(f1){
return true;
}
boolean f2 = rtnLu(arr, a-1, b, p-3, list);//上
if(f2){
return true;
}
boolean f3 = rtnLu(arr, a+1, b, p, list);//下
if(f3){
return true;
}
boolean f4 = rtnLu(arr, a, b-1, p-1, list);//左
if(f4){
return true;
}
boolean flag = f1||f2||f3||f4;
if(flag){
return true;
}else{
arr[a][b] = 1;
list.remove(list.size()-1);
return false;
}
}
    public static void main(String[] args) {
    Main obj = new Main();
    Scanner scan = new Scanner(System.in);
    String str = scan.nextLine();
    String[] arr = str.split(" ");
    int n = Integer.valueOf(arr[0]);
    int m = Integer.valueOf(arr[1]);
    int p = Integer.valueOf(arr[2]);
    int[][] a = new int[n][m];
    int i = 0;
    while(i<n){
    String temp = scan.nextLine();
    String[] tarr = temp.split(" ");
    for(int j = 0;j<m;j++){
    a[i][j] = Integer.valueOf(tarr[j]);
    }
    i++;
    }
    ArrayList<String> list = obj.rtnLu(a, p);
    if(list.size()!=0){
    for(int w=0;w<list.size();w++){
        System.out.print("["+list.get(w)+"]");
        if(w!=list.size()-1){
        System.out.print(",");
        }
        }
    }else{
    System.out.print("Can not escape!");
    }
   
    }
}

求阶乘末尾0 那道题 有点简单,就不写了
#滴滴#
全部评论

相关推荐

02-26 16:52
门头沟学院 Java
Lunarloop:董事长亲自到ssob来要IM项目的技术方案来了
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客企业服务