用于生成数字数组的算法,数字之和给出特定数字

时间:2017-02-03 03:15:26

标签: java algorithm

如何在java中使用算法获得此结果: 例如:

the_specific_number = 5
length_of_the_array = 3

这应该返回:

5 - 0 - 0;
4 - 1 - 0;
4 - 0 - 1;
3 - 2 - 0;
3 - 1 - 1;
3 - 0 - 2;
2 - 3 - 0;
2 - 2 - 1;
2 - 1 - 2;
2 - 0 - 3;
1 - 4 - 0;
1 - 3 - 1;
1 - 2 - 2;
1 - 1 - 3;
1 - 0 - 4;
0 - 5 - 0;
0 - 4 - 1;
0 - 3 - 2;
0 - 2 - 3;
0 - 1 - 4;
0 - 0 - 5;

自从10天以来我一直在考虑这个问题,但我什么都没发现

1 个答案:

答案 0 :(得分:0)

嗯,我想在某种程度上帮助你,这就是为什么我几乎要告诉你解决这个问题的原因。您可以根据自己的要求尝试其余的事情。

public static void main(String[] args) {
    try (Scanner in = new Scanner(System.in)) {
        int iNum = in.nextInt();
        int iRange = 3;// Fixed for now.

        int iCount = 1;
        int iIncrement = iRange / 2;
        for (int i = iNum; i >= 0; i--) {
            for (int k = 0; k < iCount; k++) {
                for (int j = 0; j < iRange; j++) {
                    if (j == 0) {// Printing First Digit.
                        System.out.print(i + " - ");
                    } else if (j == iRange - 1) {// Printing Last Digit.
                        System.out.print(k + ";");
                    } else {
                        // Printing Rest of the Digits.
                        /**
                         * Edit this section to make this code generic for variable iRange.
                         */
                        System.out.print((iNum - i - k) + " - ");
                    }
                    // System.out.print(i + " - " + j + " - " + k + " : ");
                }
                System.out.println();
            }
            iCount += iIncrement;
        }
    }
}

输出 - :

5
5 - 0 - 0;
4 - 1 - 0;
4 - 0 - 1;
3 - 2 - 0;
3 - 1 - 1;
3 - 0 - 2;
2 - 3 - 0;
2 - 2 - 1;
2 - 1 - 2;
2 - 0 - 3;
1 - 4 - 0;
1 - 3 - 1;
1 - 2 - 2;
1 - 1 - 3;
1 - 0 - 4;
0 - 5 - 0;
0 - 4 - 1;
0 - 3 - 2;
0 - 2 - 3;
0 - 1 - 4;
0 - 0 - 5;

描述 - :我已经为变量iNum(the_specific_number)和固定iRange(length_of_the_array)编写了此代码。在运行此应用程序时,它会要求iNum手动输入并生成所需的数字数组 如果您想将其设为iRange的通用,那么您可以更新else部分内的逻辑。

 } else {
                            // Printing Rest of the Digits.
                            /**
                             * Edit this section to make this code generic for variable iRange.
                             */
                            System.out.print((iNum - i - k) + " - ");
                        }

您可以使用// System.out.print(i + " - " + j + " - " + k + " : ");行来分析所有情况下i, j & K的值,以便您可以为iRange的可变范围编写逻辑。 我希望这会在某种程度上帮助你。如果您愿意,我们可以进一步讨论。但是在向别人询问之前尝试自己总是更好,如果你做了一些事情,那么在询问时分享完成的工作。