1

我正在尝试解决这个练习,这似乎很容易但我无法理解约束 - 规则,它说:

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

2 回答 2

2

它很简单 - 如果您要使用双手(2 只手)给出数字,那么您首先需要给出包含总数的较大数字 -

例如 7 (4+3 OR 5+2) 当用 2 手表示时 - 先给 4 !

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

于 2012-09-17T04:07:21.573 回答
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();
    }
}
于 2012-09-17T04:08:29.747 回答