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

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 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化