質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

815閲覧

while文とfor文の違い

encho

総合スコア182

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/06/26 11:13

#while文とfor文の違い
atcoderにてこちらの問題を解いていました。
問題リンク
イメージ説明

while文, for文を使った回答を作りました。
どちらも同じ意味のコードだと思っていたのですが、while文の答えは間違っており、for文の答えはあっていました。
私の認識としてはどちらも i<n-1の間はループを続けるという意味だったのですがこれらの違いは何だったのでしょうか?

while文で書いたコード

cpp

1int main() { 2 int n; 3 cin >> n; 4 vector<long long> h(n); 5 for(int i=0; i<n; i++) cin >> h[i]; 6 7 int ans = -100, u, s, i=0; 8 while(i < n-1) { 9 u = i; 10 while(i < n-1 && h[i] < h[i+1]) i++; 11 while(i < n-1 && h[i] > h[i+1]) i++; 12 s = i; 13 ans = max(ans, s - u + 1); 14 } 15 cout << ans << endl; 16}

for文で書いたコード こちらは正解

cpp

1int main() { 2 int n; cin >> n; 3 vector<int> h(n); 4 for(int i=0; i<n; i++) cin >> h[i]; 5 int ans = 1, u, s; 6 for(int i=0; i<n-1;) { 7 u = i; 8 while(i < n-1 && h[i] < h[i+1]) i++; 9 while(i < n-1 && h[i] > h[i+1]) i++; 10 s = i; 11 ans = max(ans, s - u + 1); 12 } 13 cout << ans << endl; 14}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pepperleaf

2021/06/26 11:20

他の部分、微妙に違ってません?
guest

回答2

0

どちらも同じ意味のコードだと

for/while文の中はそうですね

nの最小値が問題文に記載されている通り1です。
その際にどうなるかを検証するとよいでしょう。

投稿2021/06/26 11:30

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

原因は、whileforの違いではなく、ansの初期値の違いになります。
入力が以下の場合、出力はどうなるべきでしょうか。

text

11 21

投稿2021/06/26 11:26

actorbug

総合スコア2231

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問