C++にてwhile文を書いたのだが、思ったようにうごかない為、どこに間違いがあるのか教えてほしい。
AtCoderのこの問題を解こうとしています。
https://atcoder.jp/contests/abc065/tasks/abc065_b
while 文の条件式の判定にvec.at(i) != 2 を使っています。vec.at(i)を同while文の最後にcout にて出力して、2以外の整数が入っていてもループしない。条件式が真でループしてくれると思ったのだが、ループしてくれなかった。
発生している問題・エラーメッセージ
エラーは出ないが、while文がループしてくれない。
該当のソースコード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >>N; vector<int> vec(N); for(int i=0;i<N;i++){ cin >> vec.at(i); } int i =0; int count = 0; while(vec.at(i) != 2){ i = vec.at(i)-1;//3 count++; cout<<vec.at(i)<<endl; if(count==N-1) cout<<-1<<endl; break; } if(count<N) cout<<count<<endl; }
試したこと
入力をいろいろな値にいじってみた。
while文ではなくfor文で書き換えてみた。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー