组队选择(递归no.3)

来源:JK老班

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

    int n,k,m;
    int[] A;
    
    public TeamSelect() {
        Scanner sc=new Scanner(System.in);
        n=sc.nextInt(); k=sc.nextInt(); m=sc.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) {
        TeamSelect t=new TeamSelect();
    }                                                                                                                                                              


}
 

猜你喜欢

转载自blog.csdn.net/llllll_____/article/details/88868736
今日推荐