51nod 1267 4个数和为0(暴力)

来源:互联网 发布:广联达算量软件 编辑:程序博客网 时间:2024/05/16 01:34

题目:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1267
思路:排序,直接枚举前两个数,然后后面两个数,前后枚举找
(开始想的是枚举用map统计越写越蠢,弃了
代码:

#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1005;int a[N];int main(){    int n;    scanf("%d",&n);    for(int i = 1;i <= n;i++)        scanf("%d",&a[i]);    sort(a+1,a+1+n);    bool flag = false;    for(int i = 1;i <= n;i++)    {        for(int j = i+1;j <= n;j++)        {            int k = j+1,h = n;            while(k < h)            {                int sum = a[i]+a[j]+a[k]+a[h];                if(sum > 0)                    h--;                else if(sum < 0)                    k++;                else                {                    flag = true;                    break;                }            }        }        if(flag)            break;    }    if(flag)        printf("Yes\n");    else        printf("No\n");    return 0;}// -2 -1  1 2
原创粉丝点击