侧边栏壁纸
博主头像
小白博主等级

just do it!

  • 累计撰写 60 篇文章
  • 累计创建 77 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

n个字符中取k个的全部组合

小白
2018-01-07 / 0 评论 / 0 点赞 / 77 阅读 / 267 字

思路

递归求解!

Code

public class n_k {
    static void com(int n,int k,String a[],String b[],int m) {
        if(k==0) {
            for(int i=0;i<b.length;i++) 
                System.out.print(b[i]+","); 
            System.out.println(); 
        }else {
            for(int i=n;i>=k-1;i--) {
                b[m]=a[i];
                com(i-1,k-1,a,b,m+1);
            }
        }
    }
    public static void main(String[] args) {
        Scanner as=new Scanner(System.in);
        int n,k;
        String s;
        while(as.hasNext()) {
            s=as.nextLine();
            k=as.nextInt();
            String t=as.nextLine();
            String a[]=s.split(" ");
            String b[]=new String[k];
            n=a.length;
            com(n-1,k,a,b,0);
        }
    }
}

解析

  • com(int n,int k,String a[],String b[],int m)函数中n表示所有字符(字符串)中剩余没取字符(字符串)的个数;
  • k表示需要取的字符(字符串)中还需要取的个数;
  • 字符串数组a表示所有字符(字符串)的个数;
  • 字符串b 表示取了的字符(字符串)的组合;
  • m表示下次取字符(字符串)时存放在字符串数组b中的位置。
  • 终止递归的条件k==0!
0

评论区