有一些数,不知道具体个数,客户端可以输入,求这些数的有机组合。即:不指定几个数组合,任意几个数都可以组合。只求算法,这些数放在什么类型的容器内不要求。用java或c代码写,可以只写代码急用,多谢

解决方案 »

  1.   


    public class Combination { public static void main(String[] args) {
    int[] nums = { 1, 2, 3, 4};
    for (int i = 0; i < nums.length; i++) {
    printCom(nums,i + 1);
    }
    } public static void printCom(int[] nums, int count) {// nums为输入可选数集合,count输出其中几个
    innerPriCom(nums, count, 0, count);
    } private static void innerPriCom(int[] nums, int count, int foIndex,
    int lgIndex) {
    if (foIndex == count) {
    for (int i = 0; i < count; i++) {
    System.out.print(nums[i] + " ");
    }
    System.out.println();
    return;
    }
    innerPriCom(nums, count, foIndex + 1, lgIndex);
    for (int i = lgIndex; i < nums.length; i++) {
    nums[foIndex] ^= nums[i];
    nums[i] ^= nums[foIndex];
    nums[foIndex] ^= nums[i];
    innerPriCom(nums, count, foIndex + 1, i + 1);
    nums[foIndex] ^= nums[i];
    nums[i] ^= nums[foIndex];
    nums[foIndex] ^= nums[i];
    }
    }
    }
    测试结果:




    1 2 
    1 3 
    1 4 
    3 2 
    3 4 
    4 2 
    1 2 3 
    1 2 4 
    1 4 3 
    4 2 3 
    1 2 3 4 
      

  2.   

    如果把输入的数据类型改为 char ,那该怎么做呢?