迷宫
这道题简单是挺简单的,但是就是代码量多了点,主要就是地图转化成数组。想法也很简单,就是,如果走到了超出数组,就说明走出去了,返回true,如果走到了之前走过的地方,那就进入死循环出不来了,就返回false
public class Main {
static int counts=0;
static String[]map0= {"UDDLUULRUL"
, "UURLLLRRRU"
, "RRUURLDLRD"
, "RUDDDDUUUU"
, "URUDLLRRUU"
, "DURLRLDLRL"
, "ULLURLLRDU"
, "RDLULLRDDD"
, "UUDDUDUDLL"
, "ULRDLUURRR"};
static char[][]map;
public static void main(final String[] args) {
map=new char[10][10];
boolean [][]vis=new boolean[10][10];
for(String i:map0)map[counts++]=i.toCharArray();
counts=0;
for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
if(notLeave(i, j, new boolean[10][10]))counts++;
}
}
System.out.println(counts);
}
static boolean notLeave(int i,int j,boolean[][] vis) {
if(i<0||i>9||j<0||j>9)return true;
else if(vis[i][j]==true)return false;
else {
vis[i][j]=true;
if(map[i][j]=='U') {
return notLeave(i-1, j, vis);
}
else if(map[i][j]=='D') {
return notLeave(i+1, j, vis);
}
else if(map[i][j]=='R') {
return notLeave(i, j+1, vis);
}
else{
return notLeave(i, j-1, vis);
}
}
}
}
答案31
9数算式
这道题用到的知识是全排列,全排列只要学会用模板就行了。
Java实现全排列
public class Main {
static int counts=0;
static String nums="123456789";
public static void main(final String[] args) {
f(nums.toCharArray(),0);
System.out.println(counts/2);
}
static void f(char[]num,int i) {
if(i==num.length) {
String all = String.valueOf(num);
for(int mul=1;mul<9;mul++) {
int num1=Integer.parseInt(all.substring(0,mul));
int num2=Integer.parseInt(all.substring(mul,9));
String res =String.valueOf(num1*num2);
if(res.length()==9&&check(res)) {
counts++;
}
}
return;
}
for(int j=i;j<num.length;j++) {
char temp=num[i];num[i]=num[j];num[j]=temp;
f(num,i+1);
temp=num[i];num[i]=num[j];num[j]=temp;
}
}
static boolean check(String str) {
if(str.contains("1")
&&str.contains("2")&&str.contains("3")&&str.contains("4")
&&str.contains("5")&&str.contains("6")&&str.contains("7")
&&str.contains("8")&&str.contains("9"))return true;
return false;
}
}
答案1625