#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}
他の部分、微妙に違ってません?
回答2件
あなたの回答
tips
プレビュー