数字2020NOIP模拟赛

给定 N个数,其大小范围为 [-10,+10]。在这 N个数中任取 2个数的和为 0的方案数有多少种。

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <stdio.h>

int main()
{
    int n;
    scanf("%d",&n);

    int a[n], c = 0;
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }

    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (a[i] + a[j] == 0)
                c++;
        }
    }
    printf("%d", c);
    return 0;
}

img


用桶算法

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int m, c = 0;
    int t[21] = {0};
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &m);
        c += t[10-m];
        t[m+10]++;
    }
    printf("%d", c);
    return 0;
}