2017-04-17 3 views
-6

私はコードで計算された要素でサイズNの二重配列を持っています。だから、要素を複製した1D配列の繰り返し要素数の計算方法は?

、B、A、B、C、...

:そして、このようになります。

:10

B:12

良いでしょう何例えばAが10回繰り返され、Bは12倍など

私は出力にこのような何かをしたいが繰り返されますアルゴリズムはこれを行うには?

+3

何か試しましたか? –

+0

アレイを並べ替えることはできますか? –

+0

'std :: map'を参照し、配列の値をマップのキーとして使用し、マップ値は' std :: map 'のようにカウントになります。 –

答えて

1

要素が浮動小数点の場合、が正確にに等しい2つの値の確率は非常に低くなります(浮動小数点数の表現方法により)。

2つの数値の絶対差を計算し、1.0E-5のようなε値と比較したい場合があります。差がイプシロン未満の場合は、値が等しいとみなします。

1つのアルゴリズムは配列をソートすることです。連続する値が「等しい」場合は、カウンタをインクリメントします。

+0

ありがとう!文字と地図を使用して回避するうまい方法。 – Alireza

1
char y[] = { 'a', 'b', 'a', 'c' }; 
int count[52] = {0}; 

for (int i = 0; i < (sizeof(x)/sizeof(char)); i++) 
{ 
    if (y[i] >= 65 && y[i] <= 90) 
     count[y[i] - 'A']++; 
    else if (y[i] >= 97 && y[i] <= 122) 
     count[(y[i] - 'a') + 26]++; 
} 

for (int i = 0; i < 52; i++) 
{ 
    if (i < 26 && count[i] > 0) 
     cout << char('A' + i) << ": " << count[i] << endl; 
    else if (i >= 26 && count[i] > 0) 
     cout << char('a' + i - 26) << ": " << count[i] << endl; 
} 
+0

に加えて、一般的な使用のための別の方法に言及しています。私はこれを試してみる。 – Alireza

関連する問題