0

そのため、データ構造の割り当てのために、静的に割り当てられた 3D 配列の各要素を、ランダムに選択された 5 つの色のいずれかで初期化する必要がありました。配列は ColorEnum 型で、次のように宣言されています。


enum ColorEnum { 赤、オレンジ、黄、緑、青 };


私の仕事は、要素の特定のシーケンスを構成する要素のインデックスを見つけることでした (つまり、シーケンス内の各要素は、シーケンス内の次の要素に左右、上から下、または前から後ろで論理的に接しています)。完全なシーケンスは、RED 要素が、BLUE 要素に接触している GREEN 要素に接触している YELLOW 要素に接触している ORANGE 要素に接触しているものです。接触するには、エッジやコーナーだけでなく、両方の要素の側面全体が隣接している必要があります。したがって、各要素は最大 6 つの他の要素に接触する可能性があります。個々の要素は、複数のシーケンスで使用できます。要素のインデックスをシーケンスに格納するために、要素の行、列、および深さのインデックスを保持する、静的に割り当てられた構造体の 1D 配列を使用しました。各シーケンスを格納するために、シーケンス内の要素のインデックスを保持する配列の静的に割り当てられた別の 1D 配列を使用しました。私の質問に行くと、できるだけ少ないメモリを使用するために、配列の配列に割り当てるサイズを知る必要があります。このサイズを RED、ORANGE、YELLOW、GREEN、BLUE シーケンスの最大数と等しくしたいのですが、この数を決定する方法がわかりません。数学の天才は私に手を差し伸べてくれますか? 私の任務はとうの昔に終わった。私は 94/100 を得ましたが、この質問は私を悩ませています。助けてくれてありがとう。このサイズを RED、ORANGE、YELLOW、GREEN、BLUE シーケンスの最大数と等しくしたいのですが、この数を決定する方法がわかりません。数学の天才は私に手を差し伸べてくれますか? 私の任務はとうの昔に終わった。私は 94/100 を得ましたが、この質問は私を悩ませています。助けてくれてありがとう。このサイズを RED、ORANGE、YELLOW、GREEN、BLUE シーケンスの最大数と等しくしたいのですが、この数を決定する方法がわかりません。数学の天才は私に手を差し伸べてくれますか? 私の任務はとうの昔に終わった。私は 94/100 を得ましたが、この質問は私を悩ませています。助けてくれてありがとう。

4

1 に答える 1

0

可能なシーケンスの最大量は、3D 配列の次元と (もちろん) グリッドの塗りつぶしによって異なります。組み合わせの観点から見ると、そのような 3D グリッドの最も効率的な塗りつぶしを見つけようとします。ただし、最大の割り当ては最悪のケースを想定しており、@Kevin がコメントしたようにベクトルを使用する方がよいでしょう。

私にとって効率的と思われるグリッドの塗りつぶしの 1 つは、1 つのブロックの隣接する 6 つの位置を、前の 3 つの色と次の 3 つの色で塗りつぶすことです (したがって、黄色のブロックには、隣接する 3 つのオレンジ色と 3 つの緑色のブロックがあります)。(後ろ、右、上) の隣を次の色で塗りつぶし、(前、左、下) の隣を前の色で塗りつぶすと、出現する構造により、1 つのブロックを多くのシーケンスで使用できます。色に次/前の色がない場合は、前/次の色だけです。

2Dでは、次のようなものがあります(省略された色名)

BGYOROYGBGYOROYGB
GBGYOROYGBGYOROYG
YGBGYOROYGBGYOROY
OYGBGYOROYGBGYORO
ROYGBGYOROYGBGYOR

左下の R を使用するシーケンスの数は 2^4 で、中央の R の 1 つ (無限フィールド内) を使用するシーケンスの量は 2^5 です。3D フィールド内のシーケンスの正確な合計数は、境界を考慮して、このパターンに対して計算できます (また、多少の損失があるため、エッジでおそらく異なるスキームも考慮されます)。

私の塗りつぶし方法は、グリッドを塗りつぶす 1 つの方法にすぎません。他の可能性もあり、さらに優れている可能性もあります。

于 2013-03-29T11:42:04.433 に答える