我有这段代码:
int sum = 0;
for(int i = 0; i < POPULATION_SIZE; i++){ // loop through the population (0-99)
for(int j = 0; j < 16; j++){ // loop through the individuals (in this case the cities)
sum = COST[j][j+1];
}
fitness[i] = sum;
}
我正在尝试添加所有费用。 Sum意味着等于添加所有元素的总和。
我面临的问题是,每次循环运行时,sum都会设置为下一个值,作为添加前一个值和当前值的总和。
鉴于人们的答案,我现在可以看到我相当愚蠢的错误。在你复杂化之前,这是一个被记住的基本面吗?
答案 0 :(得分:1)
要累积sum
,请将sum = ...
更改为sum += ...
:
sum += COST[j][j+1];
是的,我不知道你的最终目标,但我想知道你是否也想在外部int sum = 0
循环中移动for
。
也许不是,这取决于你想要做什么,这只是看起来很可疑,这就是你的考虑。
答案 1 :(得分:1)
您要将每个值分配给变量,您需要将值添加到变量中。您可以使用+=
运算符。
要获得每个总体的总和,需要在外部循环内初始化变量:
for(int i = 0; i < POPULATION_SIZE; i++){ // loop through the population (0-99)
int sum = 0;
for(int j = 0; j < 16; j++){ // loop through the individuals (in this case the cities)
sum += COST[j][j+1];
}
fitness[i] = sum;
}
注意:我不知道您的数据是如何排列的,但在COST[j][j+1]
中您对两个索引使用变量j
,您似乎应该使用i
他们。
答案 2 :(得分:0)
添加+ =此运算符以对值进行求和;
int sum = 0;
for(int i = 0; i < POPULATION_SIZE; i++){ // loop through the population (0-99)
for(int j = 0; j < 16; j++){ // loop through the individuals (in this case the cities)
sum += COST[j][j+1];
}
fitness[i] = sum;
}