回答編集履歴

5

間違えてVBA式で比較文書いてた

2022/11/18 07:00

投稿

pig_vba
pig_vba

スコア807

test CHANGED
@@ -46,7 +46,7 @@
46
46
  本来やりたかったのは
47
47
  ```C
48
48
  for (int i = 0; i < P.size(); ++i)
49
- if(i<>0)
49
+ if(i!=0)
50
50
  S.push_back(P[i-1] + P[i]);
51
51
  ```
52
52
  なんだろうなぁ。と思っていますが、こればかりは質問者が意図する出力次第なのであくまで提案のみにとどめさせていただきます。

4

誤字修正

2022/11/17 00:56

投稿

pig_vba
pig_vba

スコア807

test CHANGED
@@ -49,4 +49,4 @@
49
49
  if(i<>0)
50
50
  S.push_back(P[i-1] + P[i]);
51
51
  ```
52
- なんだろうなぁ。と思っていますが、こればかりは質問者外とする出力次第なのであくまで提案のみにとどめさせていただきます。
52
+ なんだろうなぁ。と思っていますが、こればかりは質問者が意図する出力次第なのであくまで提案のみにとどめさせていただきます。

3

最後の部分のみ計算が合わないので一旦回答保留

2022/11/17 00:53

投稿

pig_vba
pig_vba

スコア807

test CHANGED
@@ -30,13 +30,11 @@
30
30
  res = max(res, a + *it);
31
31
  }
32
32
  ```
33
- こちらで、今回Sは[0,3,3,6,...24,24,29,29,30]と入っているのでa=24のとき、
33
+ こちらでresの中に48が格納され
34
- *(it)はupper_bound(50-24)で26より大きい中で先頭の29が初期値になります。この時がresの最大値となる48になります。
35
- 最後に
36
34
  ```cpp
37
35
  cout << res << endl;
38
36
  ```
39
- 48が出力され、あのような出力となった、というわけです。
37
+ 最後に出力された結果、あのような出力となった、というわけです。
40
38
 
41
39
  ### となると考えられるミスは
42
40
  ```C

2

ワンチャン2重ループの中身理解してなかった時のためにさらに詳しく

2022/11/17 00:48

投稿

pig_vba
pig_vba

スコア807

test CHANGED
@@ -4,7 +4,7 @@
4
4
  for (int j = 0; j < P.size(); ++j)
5
5
  S.push_back(P[i] + P[j]);
6
6
  ```
7
- まずここで、**Pの要素を個別に合算した配列をP^2個分生成してます。** 
7
+ まずここで、**Pの要素を個別に合算した配列をP.size個*P.size個=P^2個分生成してます。** 
8
8
  もっと簡潔に言うと、このfor文は
9
9
  **P[0]+P[0]~P[N]+P[N]の結果を順番にSに挿入している形になってます。**
10
10
  S=3+3,3+14,3+15~**0+0**っていう動きなんですね。

1

補足

2022/11/17 00:45

投稿

pig_vba
pig_vba

スコア807

test CHANGED
@@ -1,4 +1,4 @@
1
- まず**なんでこんな出力になったのか**ですが、
1
+ ### なんでこんな出力になったのか
2
2
  ```C
3
3
  for (int i = 0; i < P.size(); ++i)
4
4
  for (int j = 0; j < P.size(); ++j)
@@ -37,3 +37,18 @@
37
37
  cout << res << endl;
38
38
  ```
39
39
  で48が出力され、あのような出力となった、というわけです。
40
+
41
+ ### となると考えられるミスは
42
+ ```C
43
+ for (int i = 0; i < P.size(); ++i)
44
+ for (int j = 0; j < P.size(); ++j)
45
+ S.push_back(P[i] + P[j]);
46
+ ```
47
+ まぁ、ここだと思います。
48
+ 本来やりたかったのは
49
+ ```C
50
+ for (int i = 0; i < P.size(); ++i)
51
+ if(i<>0)
52
+ S.push_back(P[i-1] + P[i]);
53
+ ```
54
+ なんだろうなぁ。と思っていますが、こればかりは質問者外とする出力次第なのであくまで提案のみにとどめさせていただきます。