• 締切済み

c++について

色が [青] [赤] [赤] [白] [白] [青]が繰り返しに並んでいるとき左から100番目の時の色を求めたいのですがよく分かりません。今はこんな感じで考えてます。配列の中身を何回も数えるというやり方が分かりません!!どなたか教えていただけますでしょうか。 vector<string>s{青赤赤白白青}; int cnt=0; for(auto it=s.begin();it!=s.end();it++,cnt) { if(cnt==100)//100番目ならその色を抜き出す { cout<<*it<<endl; } }

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

え? >[青]0 >[赤]1 >[赤]2 >[白]3 >[白]4 ←つまりこれが、答え >[青]5 [白]3 こっちじゃないの?同じ白だけど。

回答No.2

あくまでアルゴリズムとしてですが。 PHP言語で同じことを実際にやってみたので。 何かの参考にしてみてもらえたらと思います。 (変数の先頭が$が付く以外はほとんどC言語と変わらないので、  考え方だけ、吸収してもらえればそれでOKです)

回答No.1

そんなことをしなくてもOKですよ。 [青] [赤] [赤] [白] [白] [青] の「数」は変わらないのだから、 合計6個 つまり、 int ans=100%6; ←4が帰ります。 これを0オリジンで、4番目(4個目ではなく) [青]0 [赤]1 [赤]2 [白]3 [白]4 ←つまりこれが、答え [青]5 ループは不要です。 元の素材数が変化しないので、1度で求められますから。

OKLmgoggog
質問者

お礼

ありがとうございます、解を求めることができました!!

関連するQ&A