問題
質問内容
上記のリンクの問題でAC(正解)をだしているコードについての質問なのですが、下記のコードの次の部分がどういうことなのか教えていただきたいです。
######1
[]の中のsc.nextInt()がどういう意味なのか分からないです。
入力はしないと思うのですが。
Java
1counts[sc.nextInt()] = 1;
######2
countsの要素数で回していますが,この要素数は何を表していますか?
一番外側のforは数字と数字の間のことだと思っています。
また,最後にcountsにnextを代入していますがこれらに[]がついていません。これらは配列ではないのですか?
Java
1for (int i = 1; i < n - 1; i++) { 2 long[] next = new long[21]; 3 int x = sc.nextInt(); 4 for (int j = 0; j < counts.length; j++) { 5 if (j - x >= 0) { 6 next[j - x] += counts[j]; 7 } 8 if (j + x <= 20) { 9 next[j + x] += counts[j]; 10 } 11 } 12 counts = next; 13 }
######3
上記の二つが分からないため、これでどうやって答えになっているのかが分かりませんこの代入しているだけの操作で。
40
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1
の入力で7069052760が出力されるとは考えられません。
とても基本的なことかもしれませんがよろしくお願いいたします。
疑問があるコードの全体
Java
1import java.util.*; 2 3public class Main { 4 5 public static void main (String[] args) { 6 Scanner sc = new Scanner(System.in); 7 long[] counts = new long[21]; 8 int n = sc.nextInt(); 9 counts[sc.nextInt()] = 1; 10 for (int i = 1; i < n - 1; i++) { 11 long[] next = new long[21]; 12 int x = sc.nextInt(); 13 for (int j = 0; j < counts.length; j++) { 14 if (j - x >= 0) { 15 next[j - x] += counts[j]; 16 } 17 if (j + x <= 20) { 18 next[j + x] += counts[j]; 19 } 20 } 21 counts = next; 22 } 23 System.out.println(counts[sc.nextInt()]); 24 } 25}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/23 07:18