我之前发布了这个问题,但我想我已经解释过了不好。本质上,我想要生成所有可能的大小为n的点集,其中包含由用户给出的由原点(0,0,0)和点(Y1,Y2,Y3)限定的区域内的点,其中设置的值为m增加。C++尝试生成每个可能的点集,给定最大/最小x/y/z值,n个要设置的点数和m值,以增量
例如,如果n是3,m是1,和(Y1,Y2,Y3)为(1,1,1),将所生成的点集将是(每行是一组):
(0, 0, 0) & (0, 0, 0) & (0, 0, 0)
(0, 0, 0) & (0, 0, 0) & (0, 0, 1)
(0, 0, 0) & (0, 0, 0) & (0, 1, 0)
(0, 0, 0) & (0, 0, 0) & (0, 1, 1)
(0, 0, 0) & (0, 0, 0) & (1, 0, 0)
(0, 0, 0) & (0, 0, 0) & (1, 0, 1)
(0, 0, 0) & (0, 0, 0) & (1, 1, 0)
(0, 0, 0) & (0, 0, 0) & (1, 1, 1)
(0, 0, 0) & (0, 0, 1) & (0, 0, 0)
(0, 0, 0) & (0, 0, 1) & (0, 0, 1)
(0, 0, 0) & (0, 0, 1) & (0, 1, 0)
(0, 0, 0) & (0, 0, 1) & (0, 1, 1)
(0, 0, 0) & (0, 0, 1) & (1, 0, 0)
(0, 0, 0) & (0, 0, 1) & (1, 0, 1)
(0, 0, 0) & (0, 0, 1) & (1, 1, 0)
(0, 0, 0) & (0, 0, 1) & (1, 1, 1)
.......
(1, 1, 1) & (1, 1, 1) & (1, 1, 1)
这是我最初尝试过的,但它只是真正做我想要的每个单独的点,并没有找到正确的整体集(pointset是已在主程序中创建的大小为n的点对象的向量,每个点初始化为(0,0,0)):
void allPoints(double Y1, double Y2, double Y3, double precision, vector<Point> pointset)
{
int count = pointset.size()-1;
while (count>=0)
{
while (pointset.at(count).getX()<Y1) //runs through every possible rectangle within rectangle created by given point Y and origin
{
while (pointset.at(count).getY()<Y2)
{
while (pointset.at(count).getZ()<Y3)
{
// insert formula to test each set with here
pointset.at(count).incZ(precision);
}
pointset.at(count).setZ(0);
pointset.at(count).incY(precision);
}
pointset.at(count).setY(0);
pointset.at(count).incX(precision);
}
count--;
}
}
我可以经过稍后和省略任何设置包含重复的点。最后,我会通过一个特定公式测试每个点集,然后比较所有得到的值,但我知道该怎么做。
我只有真正的基本Java/C++经验,并且我在编写正确的循环时遇到了困难,尽管我觉得这里的解决方案很相似,我只是想念它。我假设我想在这种情况下使用点对象的向量。
任何帮助让我在正确的方向将不胜感激。
堆栈溢出处理软件问题。您尚未遇到软件问题,因此您处于劣势。您可以发布“这是我的计划,任何人都可以看到问题吗?”问题或者你可以发表“我已经通过下面的研究寻找一个可行的解决方案来解决我的问题并且卡住了,我应该在哪里看下一个?<研究进行到这里>”的问题。 – user4581301