2017-02-03 78 views
0

我如何得到這個在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天,但我沒有發現任何

+2

你有寫過任何代碼嗎?試過什麼?分享你的想法,不要要求我們做你的工作。 – nhouser9

+0

是的,我寫了一些代碼,但徒勞無益 –

+1

在這裏分享你的代碼,即使它是徒勞的。 – msagala25

回答

0

嗯,我想幫您在一定程度上,這就是爲什麼我要告訴你,這個問題Almos酒店的解決方案噸。您可以按照您的要求嘗試其餘的部分。

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可變範圍。 我希望這可以在一定程度上幫助你。如果您願意,我們可以進一步討論。但在詢問其他人之前先試試自己總是比較好,如果你已經做了一些事情,然後分享所要求的工作。

+0

感謝您的回答,我很高興您幫助我解決這個問題。在我看來,我一直在考慮一個遞歸函數,但是我並不擅長,當我得到答案時,數組列表的表現會非常慢,這就是爲什麼我不想顯示一部分我的代碼,我很抱歉,但再次感謝你 –

相關問題