gpt4 book ai didi

C 中的组合求和

转载 作者:行者123 更新时间:2023-11-30 15:31:27 25 4
gpt4 key购买 nike

假设我们有 4 个应用程序,可生成 100 个数据点。所以,现在我们总共有 400 个数据点。但如果我们想找出以下所有情况下的数据点之和是多少100*100*100*100。你会怎么做?

每个应用程序的 100 个数据点采用 [a][b] 类型数组的形式,其中 a 和 b 为 10, 10。

因此,对于每个应用程序,给定数据点都是[app][a][b]。求和看起来非常简单:[app][a][b]+[app1][a][b]...

但是,这就是我陷入困境的地方。例如,我不知道如何获得总计的组合如何计算 C 中数据组合的总和...即 100*100*100*100 数据集。

我在这里缺少一些数学知识。如果你能在这里帮助我,那就太好了。

编辑:

app0 [[17, 24, 85, 43, 4], [92, 6, 17, 62, 20], [72, 100, 59, 84, 67]]
app1 [[83, 8, 95, 74, 61], [95, 84, 15, 70, 89], [6, 91, 13, 85, 43]]
app2 [[88, 98, 86, 52, 32], [37, 1, 96, 43, 72], [10, 62, 76, 100, 35]]

possible data sets are
17+83+88
17+83+98
....
17+83+37
...

最佳答案

我不确定我的理解是否正确,如果我错了,请纠正我:

您有 X = 4 数量... table ,比方说;然后每个表有 Y = 10,每行有 Z = 10 数量>。您将从每个表中获取一个元素并将它们加在一起。每次将 X = 4 元素添加在一起时,每个表中添加一个元素。您想要对这些总和进行分组,然后将这些总和加在一起形成更大/最终的总和。我说得对吗?

如果是这样,则意味着最终您将得到 (Y * Z) ^ X,即 (10 * 10) ^ 4 = 100 000 000 给定值的单独总和,您在问题中将其视为组合,而实际上它们是每个组合的总和。最后,您想要每个组合的总和,这就是您想要的吗?

那么,我认为这可能会对您有所帮助:

a[tableindex][rowindex][columnindex]

应表示给定单元格中的数字,索引应从零开始。在生成每个组合的总和时,情况将如下所示:

a[0][row0][column0] + a[1][row1][column1] + a[2][row2][column2] + a[3][row3][column3]

表索引将保持不变,并且行索引和列索引中的每一个都将从 0Y - 1 = 9 的行和到处反弹Z - 1 = 9 对于列。现在我想问你,我们会遇到多少次 a[0][0][0] 作为术语?

  • row0column0 必须为 0,常量。
  • row1row2row3 的范围为 09Y = 10 可能的值。
  • column1column2column3 的范围为 09Z = 10 可能的值。

数学上的可能性会成倍增加,答案是1 * 1 * (10 * 10 * 10) * (10 * 10 * 10) = 1 000 000。其通用公式可以写为 (Y * Z) ^ (X - 1), (Y * Z) 因为它是一张表,计算 (X - 1) 次方,因为除了我们已修复的表之外还有很多表。

由于每个表格具有相同数量的单元格,并且此示例对于每个术语都适用;您可以简单地将每个单元格加在一起,然后将结果乘以 (Y * Z) ^ (X - 1),这对于您的情况来说是一百万。下面的代码可以做到这一点,前提是您的数字足够小而不会导致溢出:

#define tablecount 4
#define rowcount 10
#define columncount 10

int main(int argc, char const *argv[])
{
int a[tablecount][rowcount][columncount] = { 0 };

// Assuming it gets filled somewhere in between

int thenumber = 0;
for (int table = 0; table < tablecount; table++)
for (int row = 0; row < rowcount; row++)
for (int column = 0; column < columncount; column++)
thenumber += a[table][row][column];

for (int i = 1; i < tablecount; i++) // notice that the initial value for i is 1
thenumber *= rowcount * columncount;

return 0;
}

确保填充中间的数组,并在需要时包含适当的库。

关于C 中的组合求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24779046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com