1

私はいくつかの演習を解くC++を練習しましたが、一日中、それらを解くことができませんでした。そこで、ウェブを検索して簡単な解決策を見つけましたが、理解できません。

演習: http: //jeremiahflaga.blogspot.com/2011/09/milking-cows-programming-problem-from.html

ソリューション https://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=13658&lngWId=3

この演習のように、バイナリデータを使用して問題を解決する方法を学びたいので、興味があります。すべてのデータはビットセット内に格納されます。

だから、誰かが私に解決策を説明できるといいですね。

4

1 に答える 1

2

ソリューションが行うのは、データを入力してからビットセットを読み取ることだけです。

ビットセットには毎秒エントリがあり、誰かが牛を搾乳しているときは常にビットが1に設定されます(for(int j = begin + 1; j <= end; j++)ループ内の入力を読み取っているときに設定されます)。

次に、すべての入力が読み取られ、すべての適切なビットが設定されると、ビットセットがスキャンされて0と1の最長シーケンスがカウントされます(0から1への切り替え、またはその逆の切り替えは、前のビット値によって検出されます)if(a[i] != toggler)toggler

上記が表示されない場合は、コードをideまたはエディターにコピーし、正しくインデントされるように再フォーマットすることをお勧めします。

それは素晴らしい解決策ではありません。おそらくそれは競争に勝つための正しい方法ですが、それはメモリを非常に浪費するので、ほとんどの人が通常の状態で書くような種類のコードではありません。通常、「実際の」この種の問題では、(開始、終了)ペアを使用して間隔を管理し、重複する間隔をマージします。

于 2012-07-23T00:06:19.850 に答える