编程的两道题
青蛙走迷宫那道题
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 那道题 有点简单,就不写了
#滴滴#