zhongyan43 2017-11-16 08:21 采纳率: 100%
浏览 2417
已采纳

java如何把 一个数组元素的所有排列组合合成一个类

请教如何把static void combinationUtil() 取消, 然后合成到 public static void main (String[] args), 或者该如何 在public static void main (String[] args) 里面做一个双数组 data2[][], 然后把 combinationUtil()里面的 data[] 存到 data2[][]

class permutation {

static void combinationUtil(int arr[], int data[], int start, int end, int index, int r)
{
    if (index == r)
    {
        for (int j=0; j<r; j++)
            System.out.print(data[j]+" ");
        System.out.println("");
        return;
    }

    for (int i=start; i<=end && end-i+1 >= r-index; i++)
    {
        data[index] = arr[i];
        combinationUtil(arr, data, i+1, end, index+1, r);
    }
}

public static void main (String[] args) {
    int arr[] = {1, 2, 3, 4, 5,6,7};
    int r = 5;
    int n = arr.length;
    int data[]=new int[r];
    int start=0,end=n-1,index=0;
    combinationUtil(arr, data, start, end, index, r);
}

}

程序运行的结果是
1 2 3 4 5
1 2 3 4 6
1 2 3 4 7
1 2 3 5 6
1 2 3 5 7
1 2 3 6 7
1 2 4 5 6
1 2 4 5 7
1 2 4 6 7
1 2 5 6 7
1 3 4 5 6
1 3 4 5 7
1 3 4 6 7
1 3 5 6 7
1 4 5 6 7
2 3 4 5 6
2 3 4 5 7
2 3 4 6 7
2 3 5 6 7
2 4 5 6 7
3 4 5 6 7

  • 写回答

1条回答 默认 最新

  • yanggq1988 2017-11-16 09:40
    关注
        static void combinationUtil(int arr[], int data[], int start, int end, int index, int r, List<int[]> list)
        {
            if (index == r)
            {
                int[] obj = new int[r];
                for (int j=0; j<r; j++) {
                    obj[j] = data[j];
                    System.out.print(data[j]+" ");
                }
                list.add(obj);
    
    
                System.out.println("");
                return;
            }
    
            for (int i=start; i<=end && end-i+1 >= r-index; i++)
            {
                data[index] = arr[i];
                combinationUtil(arr, data, i+1, end, index+1, r, list);
            }
        }
    
        public static void main (String[] args) {
            int arr[] = {1, 2, 3, 4, 5,6,7};
            int r = 5;
            int n = arr.length;
            int data[]=new int[r];
            int start=0,end=n-1,index=0;
            List<int[]> list = new ArrayList<>();
            combinationUtil(arr, data, start, end, index, r, list);
    
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程