计算一个整数与自己相等的次数,然后计算百分比

标签 c arrays count integer

我有一个数组,数组中有整数。我正在尝试计算数组中整数重复的次数。之后我想打印百分比。这是我到目前为止所拥有的。

for(i = 2; i < 8; i++){
    mmblk[i] = (num[i] / bsize);   //mmblk[i] =0,0,1,9,0,1
    if(mmblk[i] == mmblk[i]){      
        count ++;
        p = count/num[0];
        percent = (p * 100);
    }
}
printf("Highest possible hit rate = %d/%d = %d %\n", count, num[0], percent);//num[0]=6

对于我得到的输出: 最高可能命中率 = 0/6 = 0

输出应该是这样的: 最高可能命中率 = 3/6 = 50 %

我知道出了点问题,但我不知道是什么。任何帮助将不胜感激。

最佳答案

所以如果我没理解错的话,你是在寻找数组中重复值的最大数量。

func( {1,2,3} ) = 0
func( {1,1,3} ) = 2
func( {1,1,1} ) = 3

要获得百分比,只需将该结果除以数组的长度即可。

问题是你的函数太简单了,根本不是解决方案。

我在第一种方法中提出的解决方案是使用另一个名为 counts 的数组。这与源数组的长度相同。它最终是源数组中每个数字出现的次数。

对于源数组中的每一项,您计算该数字出现的次数,并将结果存储在计数中。然后找到计数数组的最大值,并且您有 a) 您要查找的最大重复值,以及 b) 源数组中相应的最大重复值的索引。

例如{0,0,1,9,0,1}:

src    counts
  0       3        Max 
  0       3
  1       2
  9       1
  0       3
  1       2

对此的一个优化是,在您计数时,如果您在数组的前面遇到相同的数字,您可以停止,因为您已经计算了该值的重复。

有了它,您的结果是:

src    counts
  0       3        Max 
  0       0        
  1       2
  9       1
  0       0
  1       0

另一个优化是只从数组中的当前索引开始计数。这与其他优化的原因相同。

结果:

src    counts
  0       3        Max 
  0       2
  1       2
  9       1
  0       1
  1       1

关于计算一个整数与自己相等的次数,然后计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9918927/

相关文章:

java - 计算两个集合之间的交集最有效的方法是什么(Java)?

c - 安全使用 MultiByteToWideChar

javascript - Highcharts 远程数据 - JSON 对象未定义

javascript - 在树对象中的字符串数组中进行转换和分组

count - 如何计算每天的时间戳条目数

pandas - 如何使用计数在 Pandas 中进行 vlookup

python - 检测停止进程Python

c - 确定缓存的详细信息

java - 如何进行CRC64分布式计算(利用其线性特性)?

arrays - 为什么这两种不同的构造数组的方式会产生不同的行为?