我正在开发一个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)表示生成“后期网格”,我该怎么做。任何帮助是极大的赞赏。
这不是一个家庭作业,这是我正在研究的一个副项目。
答案 0 :(得分: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 =&gt ; (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”
答案 1 :(得分: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