1 solutions

  • 0
    @ 2024-6-12 10:28:40

    枚举(n3n^3)

    • 分别枚举和,加数,被加数,判断是否符合条件,统计数目。
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110;
    int a[N];
    int main()
    {
        int n;
        cin>>n;
        int cnt=0;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        for(int k=1;k<=n;k++) //枚举和
        {
            bool st=false;
            for(int i=1;i<=n;i++) //枚举加数
            {
                for(int j=i+1;j<=n;j++) //枚举被加数
                {
                    if(a[i]+a[j]==a[k]) //找到一组合法解
                    {
                        st=true;
                    }
                }
            }
            if(st) //当前数可以被凑出来
            {
                cnt++;
            }
        }
        cout<<cnt;
        return 0;
    }
    

    枚举+标记(n2n^2)

    • 枚举加数和被加数,标记所有的和,然后枚举所有的数,看是否被标记过。
    #include<bits/stdc++.h>
    using namespace std;
    const int N=110,M=20010;
    int a[N],b[M];
    int main()
    {
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        for(int i=1;i<=n;i++) //枚举加数
        {
            for(int j=i+1;j<=n;j++) //枚举被加数
            {
                int x=a[i]+a[j];
                b[x]=1;
            }
        }
        int cnt=0;
        for(int i=1;i<=n;i++) //枚举所有数
        {
            if(b[a[i]]) //当前数能够被两个数累加得到
            {
                cnt++;
            }
        }
        cout<<cnt;
        return 0;
    }
    
    • 1

    Information

    ID
    445
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    10
    Tags
    # Submissions
    6
    Accepted
    3
    Uploaded By