如何查找具有最大值的多维数组的索引
我有此代码示例来查找最大使用天数,它的工作方式与魅力一样。但我需要得到哪个array index
具有最大值。我尝试了很多方法,但无法提出解决方案。这是我曾尝试:如何查找具有最大值的多维数组的索引
#include<stdio.h>
int main(){
float maximumDayUsage=0,minimumDayDayUsage=0;
int whichDayHasMaximumUsage;
float usage[7][5]={ {1.2, 2.1, 0.8, 0.0, 4.1},
{1.0, 1.3, 4.0, 1.5, 7.8},
{3.2, 1.0, 1.3, 4.0, 9.5},
{1.5, 3.2, 2.3, 0.4, 7.4},
{1.2, 2.1, 0.8, 0.0, 4.1},
{2.6, 2.1, 1.7, 7.0, 13.4},
{1.2, 2.1, 0.8, 0.0, 4.1} };
for(int i=0;i<7;i++){
for(int j=0;j<5;j++){
if(usage[i][j]>maximumDayUsage){
maximumDayUsage=usage[i][j];
whichDayHasMaximumUsage++;
}else{
}
}
}
printf("Usage: %.2f\n",maximumDayUsage);
printf("Which Day: %d",whichDayHasMaximumUsage);
return 0;
}
只需保存最大使用量一天i
和j
指标,当你迭代这个数组:
int max_i = 0;
int max_j = 0;
float maximumDayUsage = 0;
for(int i=0;i<7;i++){
for(int j=0;j<5;j++){
if(usage[i][j] > maximumDayUsage) {
maximumDayUsage = usage[i][j];
max_i = i;
max_j = j;
}
}
}
这个'max_i'和'max_j'如何保存具有最大值的'index'?你能澄清你的答案吗? –
@ user7980830'max_i'和'max_j'将保留最大值的索引,这与“maximumDayUsage”本身将保留最大值的原因完全相同。这可能是学习如何使用调试器(如GDB)的好时机。浏览你的代码,看看你的程序运行时值是如何变化的。 –
@squeamishossifrage即使我们尝试使用具有最大值的索引来分配“max_i”和“max_j”的值,如何获得哪个索引具有最大值? –
为什么要递增'whichDayHasMaximumUsage'每次都发现一个新的最高值?将索引值'i'和'j'存储在某处不是更有意义吗? –
是的,我以为我错了。你能告诉我至少有一个提示来存储那个具有最大值的索引值吗? –