2012-09-17 47 views
1

我試圖解決這個運動,它似乎很容易this,但我不明白的約束上-rules,它說:卡在約束上的簡單運動

  1. 的數量可以在一個或代表兩隻手;
  2. 如果數量上兩隻手來表示,數值越大,給出第一

    數2如果它說3我不能例如明白的規則,我有3個,2 + 1,1 + 2(這不是因爲它的重複),如果它說6我們有6,5 + 1,4 + 2,3 + 3,2 + 4 + 1 + 5但是正確的輸出是3,有人能指導我解決這個問題嗎?? 7是2,8是2,9是1,而10是1

這是我的代碼:

import java.util.Scanner; 

class j1 { 

    public static void main(String args[]) { 
     Scanner sc = new Scanner(System.in); 
     int tot = 5; 
     int n = sc.nextInt(); 
     int sum = 0; 
     int count = 1; 

     for (int i = 1; i <= tot; i++) { 

      for (int j = 1; j <= tot; j++) { 
       sum = i + j; 
       if (sum == n) { 

        System.out.println(i); 
        System.out.println(j); 
        count++; 
       } 
       } 


     } 

     System.out.println(count); 
     sc.close(); 
    } 
} 
+0

什麼是喲問題? –

+6

較大的數字首先給出。這意味着1 + 2無效,也是2 + 4和1 + 5。此外,6是無效的,因爲我們大概是說非突變,正常的人類手(範圍0..5)!因此有3種表達「6」的方法:5 + 1,4 + 2,3 + 3 –

+0

這個問題的表述聽起來含糊不清。對於例子'6',任何答案'5 + 1','4 + 2'和'3 + 3'都滿足要求2,所以除非有另外一個要求規定子組件必須儘可能接近相等,目前尚不清楚爲什麼只有「3 + 3」是正確的。 –

回答

2

其簡單 - 如果你要使用給數(2手),那麼你首先需要給出更大的數字,其中包括總數 -

例如對於7(4 + 3或5 + 2)當用2手代表 - 首先給4!

其他選項7(3 + 4,2 + 5)是無效的,因爲它將使我們首先列出較小數目違反規則#2

+0

爲什麼不先計算5 + 2? 5> 4. – Makoto

+0

如果我有8? – koyuki

+0

好了解它謝謝 – koyuki

1

秒針的數量必須始終是少大於或等於第一手牌的數量。我相信下面的代碼將起作用。

import java.util.Scanner; 

class j1 { 

    public static void main(String args[]) { 
     Scanner sc = new Scanner(System.in); 
     int tot = 5; 
     int n = sc.nextInt(); 
     int sum = 0; 
     int count = 1; 

     for (int i = 1; i <= tot; i++) { 

      for (int j = 1; j <= i; j++) { 
       sum = i + j; 
       if (sum == n) { 

        System.out.println(i); 
        System.out.println(j); 
        count++; 
       } 
       } 


     } 

     System.out.println(count); 
     sc.close(); 
    } 
} 
+0

你複製我的代碼 – koyuki

+0

是的,我沒有看到與代碼示例有任何區別。 – Makoto

+1

有一個區別:內部循環的條件 - 'j <= i',問題有'j <= tot'。 – 0605002