0

私はc++プロジェクトに取り組んでいて、行き詰まっています。グリッド内の要素を保持するベクトルからグリッドを生成しようとしています。元々、ベクトルは(3,3)のようなものを保持し、このXXXのようなグリッドを作成するだけです。(3,2,1)の場合、XX|Xになります。括弧内の最初の数字は、グリッド内にあるXの総数を表し(Xが削除された後でも)、その後の数字は、上記のように各列のXの数を表します。

私が抱えている問題は、削除されたXも追跡するグリッドを作成することです。そのため、グリッドを再作成するときに、削除されたXのスペースがそこにあり、上書きされません。

例: 最初のグリッド= XXX | XX =>(5,3,2) 後のグリッド = OOX | XX =>(3,1,2)

「初期グリッド」からグリッドを生成するのは簡単ですが、後のグリッドを生成するのは難しいです(私にとって)。たとえば、私の新しいベクトルは「後のグリッド」に対して(3,1,2)を保持します。(3,1,2)表現を使用して「後のグリッド」を生成したい場合は、どのようにすればよいですか。どんな助けでも大歓迎です。

これは宿題ではありません。これは私が取り組んでいるサイドプロジェクトです。

4

2 に答える 2

0

プログラムには2次元配列では不十分でしょうか?最大マップサイズの2次元配列を宣言し、その後の最大グリッドサイズを表すために2つの独立変数を使用するとしますか?

char Map[15][15] = {//...}
int Width = 15;
int Height = 15;

//Map decreases in size...
Width--;
Height--;
//all calculations are now based off of width and height(not the initial size of the array)

if(xpos < Width)
//do stuff 
于 2012-10-16T17:47:20.037 に答える
0

永続性の問題に取り組んでいるようです。あなたが何をしようとしているのか完全には理解できないかもしれませんが、あなたは一連のタプルを次の形式(x:int, y:int, z:int)
で読んでいるようです。

x = total number of 'X' 
y = 'X' before vertical bar
z = 'X' after vertical bar 

次に、欠落している「X」を「O」で埋めます。

問題は、グリッドの初期状態に関する情報が失われているため、埋める「O」の数がわからないことです。

もし私があなたなら、初期状態を追跡するために別の値を追加するだけです。この値は変更されることはなく、グリッドが最初に生成されたときに初期番号「X」が入力されます。

したがって、あなたの例では、次のようになります。

最初のグリッド=XXX| XX =>(5,3,2)後のグリッド= OOX | XX =>(3,1,2)

代わりに、このようにタプルに初期状態値を追加してみてください

最初のグリッド=XXX| XX =>(5,3,2、5)後のグリッド= OOX | XX =>(3,1,2、5

これで、次の形式のタプルが作成されます(x:int, y:int, z:int, n:int)

x = total number of 'X' 
y = 'X' before vertical bar
z = 'X' after vertical bar 
n = 'X' in initial state

これで、評価することで、埋める「O」の数を決定できます。

n - x = number of 'O' to pad with 

'X'の初期数がタプルごとに異なると仮定すると、初期の'X'状態も追跡する必要があります。'X'の初期数を追跡することで、グリッドの連続する反復ごとにパディングする必要のある'O'の数を常に識別できます。

于 2012-10-16T17:25:22.490 に答える