1

これは私が持っているものです。ゼロをスキップしています。どうすれば修正できますか?数字が重複している回数を数えようとしています。

void hit_rate(int a, int cmset[])
{
    int i, j, k=0;
    for(i=0;i<a;i++){
        for(j=i;j<a;j++){
            if((cmset[i] == cmset[j])){
                k++;
            }
        }
        printf("%d\n",k);
        k=0;
    }
}

cmset      k **now** prints  
  4          2       
  6          1        
  0          3       
  0          2       
  0          1       
  1          1       
  2          1       
  4          1    
4

2 に答える 2

3

する必要がありますfor(j=0;j<a;j++)

于 2012-04-11T05:02:20.213 に答える
3

重複を数えながら、arr[5] = {1, 2, 2, 3, 3}; 例えば

i = 0; // first loop
j = i; //2nd loop

これにより、arr[0] をすべて i = 1..4arr[i] == arr[j]; //condition でテストした場合にどうなるか。次の反復では、a[1] を arr[0] でチェックする必要はありません。これは、既に完了 (またはチェック) されているためです。カウンターを増やします(重複が一致した場合)。それが終了したら、アレイリセットカウンターの終わり。そしてそれを印刷します。お役に立てば幸いです。まだ混乱している場合は、サンプル コードを提供します。

于 2012-04-11T05:11:20.837 に答える