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つの手)を使って数を与えるつもりなら、あなたは最初に全体の数を構成するより大きな数を与える必要があるでしょう-

たとえば、2つの手を使用して表された場合の7(4+3または5+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 に答える