import java.util.Scanner;
public class POJ_3187 {
static boolean flag=true;
static void solve(int num,int[] a,int sum){
int[] p=new int[num+5];
System.arraycopy(a,0,p,0,num+1);
int k=num;
while(num-->0){
for (int i = 1; i <= num; i++) {
int pre=p[i];
int pos=p[i+1];
p[i]=pre+pos;
}
}
if(sum==p[1]&&flag){
for (int i = 1; i < k; i++) {
System.out.print(a[i]+" ");
}
System.out.println(a[k]);
flag=false;
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num=sc.nextInt();
int[] a=new int[num+5];
for (int i = 1; i <= num; i++) {
a[i]=i;
}
int sum=sc.nextInt();
boolean[] b1=new boolean[num+5];
int[] b=new int[num+5];
dfs(num,sum,b1,a,b,1);
}
static void dfs(int num,int sum,boolean[] b1,int[] a,int[] b,int index){
if(!flag)return;
if(index==num+1){
solve(num,b,sum);
}
else{
for (int i = 1; i <= num; i++) {
if(!b1[i]){
b[index]=a[i];
b1[i]=true;
dfs(num,sum,b1,a,b,index+1);
b1[i]=false;
}
}
}
}
}
POJ-3187 全排列 java
最新推荐文章于 2024-07-09 16:17:35 发布