自动化用户输入的组合模式n

时间:2016-02-29 09:06:49

标签: java for-loop recursion numbers

我编写的程序给出了所有组合直到'n',其中组合不包含任何重复元素。 以下是代码(对于n = 4):

    int[] arr = {0,1,2,3,4};
    for (int i = 0; i < arr.length; i++) 
    {
        System.out.println(i);
        for (int j = i+1; j < arr.length; j++)
        {
            System.out.println(i+""+j);
            for (int k = j+1; k < arr.length; k++)
            {
                System.out.println(i+""+j+""+k);
                for (int l = k+1; l < arr.length; l++)
                {
                    System.out.println(i+""+j+""+k+""+l);
                    for (int m = l+1; m < arr.length; m++)
                    {
                        System.out.println(i+""+j+""+k+""+l+""+m);
                    }
                }
            }
        }
    }

输出为:

0
01
012
0123
01234
0124
013
0134
014
02
023
0234
024
03
034
04
1
12
123
1234
124
13
134
14
2
23
234
24
3
34
4

我想让用户输入任意数字(n)以执行类似的功能。

1 个答案:

答案 0 :(得分:0)

首先,您使用了递归标记,我无法在您的代码中看到递归。 您可以通过BufferedReader接收用户输入。您可以使用递归解决上述问题。先尝试一下。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine().trim());
int arr[] = new int[n];
String s[] = br.readLine().split(" ");
for(int i=0;i<n;i++){
arr[i] = Integer.parseInt(s[i]);
}