大佬你好,我看第二题没有对全排列的顺序有要求呀。为什么我这个只是输出顺序和你完全相反,其他结果全部一样,为什么只能过1/8;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public void DFS(int n, int k,int tar,int level, List<Integer> list,List<List<Integer>>lists){
if(level==k){
List<Integer> t=new ArrayList<>();
t.addAll(list);
lists.add(t);
return;
}
for(int i=tar;i<=n;i++){
list.add(i);
DFS(n,k,i,level+1,list,lists);
list.remove(level);
}
}
public void printres(int n,int k){
List<List<Integer>>lists=new ArrayList<>();
List<Integer> list=new ArrayList<>();
DFS(n,k-1,0,0,list,lists);
System.out.println(lists.size());
for(int i=0;i<lists.size();i++){
int pre=0;
for(int j=0;j<lists.get(i).size();j++) {
for (int w = pre; w < lists.get(i).get(j); w++) {
System.out.print("*");
}
System.out.print("|");
pre = lists.get(i).get(j);
}
for(int q=pre;q<n;q++){
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
Main main=new Main();
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int k=sc.nextInt();
main.printres(n,k);
}
}