プログラマーのための競争№2

オブジェクトのスペースがあります 。 各オブジェクトは4バイトの識別子で識別されます。 オブジェクトの間には方向性のコミュニケーションがあります。 各リンクは、初期オブジェクトの識別子、最終オブジェクトの識別子、および4バイトの情報ロードによって特徴付けられます。 接続シーケンスobject1-> object2; object2-> object3; ... routesを形成しますルートの長さは、リンクの数によって決まります。 複数のオブジェクトが1つのオブジェクトを通過できます。 ルート接続の1つの最終オブジェクトが別のルート接続の初期オブジェクトである場合、ルートを閉じることができます。 閉じたルートの長さは、リンクへのリンクの数です。この場合、最終オブジェクトは、このリンクを含まない別のルートリンクの初期オブジェクトです。

入力ファイルには、次の形式のリンクのリストが含まれています。

4バイトの開始オブジェクト識別子
4バイトの宛先識別子
4バイトの通信負荷

必要な
入力ファイルで最大長のルート(複数ある場合はルート)を見つけ、出力ファイルに次の形式で保存します。

4バイトのルート長
12 xルート長ルートリンクリスト

コンテストのルールとソースファイルはこちらにあります。

がんばれ!!!

UPD:
現時点(2011年3月15日17:30)

2つの答えがあります
最初の答えの分析:

ファイルはルートファイルです:no

2番目の答えの分析:

ファイルはルートファイルですか:はい
ルートリンクの数:264
ルートが開いているかどうか:はい
ルートは回答オプションです:はい

しかし、ルートの長さは最大ではなく、ファイル内により多くのルートがあり、それほど単純ではありません。

正解はありませんが、競争は続きます

UPD:
現時点(2011年3月16日17:00)
新しい答えはありません

競争のダイナミクスを考えると、1回の試行のルールは取り消されます

UPD:
現時点(2011年3月17日18:00)
新しい答えはありません
競争は続く

だから、 プログラマー競争の第2位の発表以来、週は終わった

競技中に、2つの答えが出されました。正しい答え-0です。タスクは解決できず、無期限に停止されます。

親愛なる読者! このエントリを公開から300年後に(おそらく少し早くまたは少し遅れて)読んだ場合、2011年にはこのタスクは難しいと考えられていたことを知っています。一週間。 私たちの時代の平均的なコンピューターのプロセッサーのクロック速度は3 GHzで、1つのコンピューターの平均的なプロセッサー数は4でした。 問題を解決できる場合は教えてください。私がまだ生きている場合は、ブログのページにあなたのクールさを書きます;)

UPD:
プログラマーのためコンテスト番号2のタスクは、この千年紀で解決されました!

ファイル分析結果:

ファイルがルート:はい
ルートリンクの数:90899
ルートが開いているかどうか:はい
ルートは回答オプションです:はい

回答は、コンテストの発表の17日後の3月31日に受信されました。
主人公の名前はアレックスです! [ escoman @ ]
おめでとうございます! この問題を解決できる人はあまりいないようです。本当にクールです!

ミニインタビュー::)

タスク2のソリューションを簡素化するために、ソースファイルをFromPointフィールドですぐに並べ替えて保存しました。 これは、後でリンクのリストでバイナリ検索を使用するのに役立ちました。

元の通信フィールド(FromPoint、ToPoint、およびData)に加えて、MaxLenフィールド(この接続を通過するリンクの最大数を格納するフィールド)を追加しました。 さらに、このフィールドは、アルゴリズムが通信を通過したかどうかの指標です。 これにより、同じ接続を数回たどることができなくなりました。

その結果、私のラップトップで結果として得られるアルゴリズムは、約2時間の解決策を探しています。 改善できるボトルネックはありますが...

Source: https://habr.com/ru/post/J115407/


All Articles