在一个简单的练习中陷入困境

时间:2012-09-17 04:02:05

标签: java algorithm

我正在尝试解决这个问题,看起来很简单this,但我无法理解约束 - 规则,它说:

  1. 数字可以用一只或两只手表示;
  2. 如果数字用双手表示,则首先给出较大的数字

    规则编号2我无法理解,例如,如果它说3,我有3,2 + 1,1 + 2(这不是因为它重复),如果它说6我们有6,5 + 1,4 + 2,3 + 3,4 + 4 + 1 + 5但是正确的输出是3,有人可以指导我这个问题吗? 7为2,8为2,9为1,10为1。

  3. 这是我的代码:

    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();
        }
    }
    

2 个答案:

答案 0 :(得分:2)

很简单 - 如果你打算使用双手(2只手)给出数字,那么你首先需要给出包含总数的更大​​数字 -

例如对于7(4 + 3 OR 5 + 2),当用2只手代表时 - 首先给出4个!

7(3 + 4,2 + 5)的其他选项无效,因为它会使我们首先列出违反规则#2的较小数字

答案 1 :(得分: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();
    }
}