1.之前一直MLE主要原因就是,静态变量属于全局变量,不会被GC回收,它们会一直占用内存。一般而言,为Null的对象都会被作为垃圾处理,所以将不用的对象显式地设为Null,有利于GC收集器判定垃圾,从而提高了GC的效率。
2.关于输出图中一个点到另一个点的所有简单路径,
import java.util.Scanner;
public class Main {
static int[][] data = new int[20][20];
static int[] flag = new int[20];
static StringBuilder ans=new StringBuilder();
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int s=in.nextInt();
int d=in.nextInt();
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
data[i][j]=in.nextInt();
}
}
ans.append(s);
dfs(s,d,n);
data=null;
flag=null;
ans=null;
}
static void dfs(int s,int d,int n) {
if(ans.charAt(ans.length()-1)==(char)(d+48)) {
System.out.println(ans);
ans.deleteCharAt(ans.length()-1);
return;
}
int len=ans.length();
flag[s]=1;
for(int i=0;i<n;i++) {
if(data[s][i]!=0&&flag[i]==0) {
ans.append(i);
dfs(i,d,n);
}
}
ans.delete(len-1, ans.length());//每次操作完后记得将ans恢复为原来的样子
flag[s]=0;//访问的节点还原
}
}