【发布时间】:2014-08-25 09:30:39
【问题描述】:
给定一个 N*N*N* 维度的立方体。这个立方体的每个顶点都有一些数字。现在这个原始立方体被扭曲,使得(i,j,k)处的任何顶点上的数字被由(0,0,0)和(i,j,k)组成的立方体中所有数字的总和替换......现在之后失真..我们必须取回原来的立方体.. 假设原始立方体是 A,那么对于 B(i,j,k)(扭曲的)中的每个元素,我们使用以下代码..
for(int i=n-1;i>=0;i--)
for(int j=n-1;j>=0;j--)
for(int k=n-1;k>=0;k--)
{
for(c=0;c<=i;c++)
for(c1=0;c1<=j;c1++)
for(c2=0;c2<=k;c2++)
B(i,j,k)=B(i,j,k)+A(c,c1,c2);
}
什么是恢复原始立方体的有效方法...我想将 B 中每个顶点的负值存储在任何其他立方体(例如 C)中,然后使用与上述相同的方法来获取原始立方体...虽然它不能正常工作...以下是我尝试过的方法..
C[50][50][50] // this C is already having values same as in B but with opposite sign
for(c=0;c<=i;c++)
for(c1=0;c1<=j;c1++)
for(c2=0;c2<=k;c2++)
C(i,j,k)=C(i,j,k)+B(c,c1,c2);
P.S 立方体的最大尺寸是 50*50*50..任何帮助请..
【问题讨论】:
-
我没有跟随失真。因为,
i、j和k是常量,所以您似乎将B(而不是 A?)扭曲到 B - B(i,j,k) 中的 same 单元格)。失真线应该是这样的:A(c,c1,c2) = A(c,c1,c2) + B(c,c1,c2)? -
可能是
for (i = 0; i < c; i++)...? -
看起来 A 是我们原来的立方体 .. 并且该代码针对所有 i,j,k [0-n-1] 运行...也就是说...实际上使用了 6 个循环.. .希望你明白我的意思..
-
@unknown__ 好吧...不,因为您的代码另有说明
-
代码本身没有任何意义。请好好看看。如果你不修复它,或者提供全面的解释,我会投票关闭,因为不清楚。