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)

从“初始网格”生成网格很简单,但生成以后的网格很难(对我来说)。例如,我的新向量将为“ Later Grid ”保留 (3,1,2)。如果我想使用 (3,1,2) 表示生成“Later Grid”,我应该怎么做。任何帮助是极大的赞赏。

这不是家庭作业,这是我正在做的一个副项目。

4

2 回答 2

0

二维数组是否不足以满足您的程序?假设您声明了一个最大地图大小的二维数组,然后使用两个自变量来表示之后的最大网格大小?

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 

那么你想用'O'填充缺失的'X'。

问题似乎是您正在丢失有关网格初始状态的信息,因此不知道要填充多少“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 回答