相似歌曲(YOJ2.0中的题)

又水了一道数组题

这次比较快,而且是一遍过

代码如下:

#include<stdio.h>
#include<math.h>

int main(void)
{
    int Q_frequency[16] = {0};
    int n_0;
    scanf("%d", &n_0);
    for(int i = 0; i < n_0; i++)
    {
        int tmp;
        scanf("%d", &tmp);
        Q_frequency[tmp / 16] += 1;
    }
    int n, k;
    scanf("%d%d", &n, &k);
    int S_frequency[n][16];
    for(int i = 0; i < n; i++)
        for(int j = 0; j < 16; j++)
            S_frequency[i][j] = 0;
    for(int i = 0; i < n; i++)
    {
        scanf("%d", &n_0);
        for(int j = 0; j < n_0; j++)
        {
            int tmp;
            scanf("%d", &tmp);
            S_frequency[i][tmp / 16] += 1;
        }
    }

    //开始计算近似度
    double similarity[n];
    for(int i = 0; i < n; i++)
    {
        double tmp = 0.0;
        for(int j = 0; j < 16; j++)
            tmp += pow(Q_frequency[j] - S_frequency[i][j], 2.0);
        similarity[i] = sqrt(tmp);
    }
    //输出
    
    for(int i = 0; i < k; i++)
    {
        int id;
        double x = 100000000000000.0;
        for(int j = 0; j < n; j++)
        {
            if(similarity[j] < x && similarity[j] != -1)
            {
                x = similarity[j];
                id = j;
            }
        }
        if(i)
            putchar(' ');
        printf("%d", id);
        similarity[id] = -1;
    }

    return 0;
}