创建一个频率数组

时间:2014-01-18 18:41:14

标签: c++

有人可以帮我提供以下主题的代码吗?

我有一个N维的int数组。我需要创建另一个数组并将第一个数字的每个数字放在那里。 对于例如 tab1 [N] = 0 0 0 1 1 1 2 2 2 4 5 ...等 结果必须是一个值为3的新数组(因为有3个零)3(因为有3个)3 1 1 ...

另外,我只需要使用For,While和If。

我创建了这段代码,但它不起作用。

int m=0;
int k = 0;
while (k<N)
{
    if (tab1[k] == tab1[k+1])
    {
       fuqi[m]++;
       k++;
    }  
    m++;
    k++;
}

2 个答案:

答案 0 :(得分:1)

我发现这更直接。

for (int i = 0; i < N; i++) {
  fuqi[i] = 0;
}

fuqi[0] = 1;

for (int i = 1, j = 0; i < N; i++) {
  if (tab1[i - 1] == tab[i])
    ++fuqi[j];
  else 
    ++fuqi[++j];
}

请注意,我跳过检查N == 0。

答案 1 :(得分:0)

试试这个:

假设fugi设置为0

int m=0;
for(int i = 0; i < N; i++)
{
    fuqi[m]++;
    if (!(i == N - 1 || tab1[i] == tab1[i+1]))
    {
        m++;
    }
}