如何查找具有最大值的多维数组的索引

问题描述:

我有此代码示例来查找最大使用天数,它的工作方式与魅力一样。但我需要得到哪个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; 
} 
+4

为什么要递增'whichDayHasMaximumUsage'每次都发现一个新的最高值?将索引值'i'和'j'存储在某处不是更有意义吗? –

+1

是的,我以为我错了。你能告诉我至少有一个提示来存储那个具有最大值的索引值吗? –

只需保存最大使用量一天ij指标,当你迭代这个数组:

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; 
     } 
    } 
} 
+0

这个'max_i'和'max_j'如何保存具有最大值的'index'?你能澄清你的答案吗? –

+1

@ user7980830'max_i'和'max_j'将保留最大值的索引,这与“maximumDayUsage”本身将保留最大值的原因完全相同。这可能是学习如何使用调试器(如GDB)的好时机。浏览你的代码,看看你的程序运行时值是如何变化的。 –

+0

@squeamishossifrage即使我们尝试使用具有最大值的索引来分配“max_i”和“max_j”的值,如何获得哪个索引具有最大值? –