题目描述
逸才奉道玄掌门之命率领青云众弟子深入蛮荒之地寻找灵兽黄鸟,完成使命后率队需经过焚香谷镇守的幽暗小道。焚香谷门卫给一行人由1至n进行了编号,并有意为难让逸才选出k个人组成一队,他们的编号之和恰好等于m。逸才笑了笑说:“组队选择有许多种,你们要哪种?”焚香谷门卫顿时懵了,不知所措地说:“你们按号码降序输出所有方案吧。”
输入
输入一行三个数字n,k和m。(n<=100, k<=10,m<=1000)
输出
按号码降序输出所有组队方案,每个号码后面输出一个空格(包括最后一个数),每组数据占一行。
样例输入
10 3 11
样例输出
2 4 5
2 3 6
1 4 6
1 3 7
1 2 8
代码
import java.util.Scanner;
public class Permutation1280 {
int n,k,m;
int[] A;
public Permutation1280() {
Scanner s=new Scanner(System.in);
n=s.nextInt(); k=s.nextInt(); m=s.nextInt();
A=new int[k+1]; A[0]=0;
Search(1);
}
void Search(int pos) {
if(pos>k) {
int sum=0;
for(int i=1;i<=k;i++) sum+=A[i];
if(sum!=m) return;
for(int i=1;i<=k;i++)
System.out.print(A[i]+" ");
System.out.println();
return;
}
for(int i=n;i>=A[pos-1]+1;i--) {
A[pos]=i;
Search(pos+1);
}
}
public static void main(String[] args) {
Permutation1280 p=new Permutation1280();
}
}