题目描述
逸才奉道玄掌门之命率领青云众弟子深入蛮荒之地寻找灵兽黄鸟,完成使命后率队需经过焚香谷镇守的幽暗小道。焚香谷门卫给一行人由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();
}
}