【解決方法】! この質問を解決するにはどうすればよいでしょうか? (C++)


日々の練習中に私が遭遇した質問は次のとおりです。

農夫のジョンは N 頭の牛を一列に並べています (1≤N≤3⋅10^5)。 残念ながら、病気が蔓延しています。 最初は、一部の牛が感染し始めます。 感染した牛は毎晩、左右の牛(存在する場合)に病気を広めます。 牛が一度感染すると、感染したままになります。 しばらく夜を過ごした後、農夫のジョンは問題が制御不能になったことに気づき、誰が病気に罹っているかを判断するために牛を検査します。 病気が原因である可能性のある牛の最小数を見つけてください。

入力フォーマット
最初の行には、農夫ジョンが飼っている牛の数である N が含まれています。
次の行には、1 と 0 だけからなる N 文字のビット列が含まれています。1 は感染した牛を表し、0 は一定の夜を経た感染していない牛を表します。

出力フォーマット
単一の整数、つまり病気が始まった可能性のある牛の最小数を出力します。

入力例:
5
11111
サンプル出力:
1
中央の牛が最初から感染した唯一の牛だったと仮定します。 その後、牛は次の順序で感染します。

0 泊: 00100 (3 頭目の牛が最初に感染)
1 泊:01110 (2 頭目と 4 頭目の牛が感染)
2泊:11111(現在、1頭目と5頭目の牛が感染)
3 泊:11111 (すべての牛がすでに感染しているため、追加の牛が感染することはありません)

2 晩以上経つと、牛の最終的な状態は入力と同じになります。 入力状態を生成する可能性のある初期状態や夜の数は他にも多数あります。次に例を示します。

0泊:10001
1泊:11011
2泊:11111
または:

0泊:01001
1泊:11111
または:

0泊:01000
1泊:11100
2泊:11110
3泊:11111
これらの初期状態にはすべて、少なくとも 1 頭の感染牛が含まれています。

入力例:
6
011101
サンプル出力:
4
この最終状態に至る可能性がある唯一の初期状態と夜間数は、一晩も経過せず、投入された 4 頭の感染牛のそれぞれが病気から始まった場合です。

得点:

* 入力 3 ~ 7: N≤1000
* 入力 8 ~ 12: 追加の制約はありません。

この問題は C++ を使用して解決する必要がありました。

私が試したこと:

解決策を考えてみましたが、今はこの質問の逆を行う方法しか知りません:( 解決策が思いつきません。助けてください! 私はそうする必要があるタイプの人間です。質問を見たら解決してください。初心者なので助けてください。

解決策 1

見る すべての制約についてこの問題を解決するにはどうすればよいですか[^] 提案された解決策については。
https://www.codeproject.com/script/Answers/Post.aspx?aid=5374347#
[edit]

引用:

この問題は C++ を使用して解決する必要がありました。

言語の選択は重要ではありません。 このような問題に対する鍵は、解決策を見つけるために必要な論理的な手順を理解することです。
[/edit]

コメント

タイトルとURLをコピーしました