基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
 收藏
 取消关注
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No"。
Input
第1行,1个数N,N为数组的长度(4 <= N <= 1000)
第2 - N + 1行:A[i](-10^9 <= A[i] <= 10^9)
Output
如果可以选出4个数,使得他们的和为0,则输出"Yes",否则输出"No"。
Input示例
5
-1
1
-5
2
4
Output示例
Yes

刚开始使用算出两个数的和然后保存在数组中,将4sum将为2sum,因为在算两个数的和的时候,可能存在重复的情况,所以用if语句判断了一下

#include<stdio.h>
#include<algorithm>
#include<string.h>
const int M = ; using namespace std; typedef pair<int, int> P; int main()
{
int n, Count, flage;
int i, j;
int b[M], a[M];
P p[M]; scanf("%d", &n); memset(a, , sizeof(a));
memset(b, , sizeof(b)); for( i = ; i < n; i++ )
{
scanf("%d", &a[i]);
} Count = ; for( i = ; i < n; i++ )
{
p[Count].first = a[i]; for( j = i+; j < n; j++)
{
p[Count].second = a[j];
b[Count++] = a[i] + a[j];
}
} for( i = ; i < Count; i++ )
{
for( j = ; j < Count; j++ )
{
if(p[i].first != p[j].first && p[i].second !=p[j].second && p[i].first != p[j].second && p[i].second != p[j].first)
{
flage = b[i] + b[j]; if(flage == )
{
printf("Yes\n"); return ;
}
} }
} printf("No\n"); return ;
}

结果提交的时候过了一半的数据,另外的一半被卡住了

Ac代码

#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int MAXN = + ; int n, num[MAXN]; int main(){
freopen("in.txt", "r", stdin); int flag, tmp;
while(scanf("%d", &n) != EOF){
for(int i=; i<n; ++i){
scanf("%d", &num[i]);
}
sort(num+, num+n);
flag = ;
for(int i=; i<n; ++i){
if(flag){ break; }
for(int j=i+; j<n; ++j){
if(flag){ break; }
int l = j+, r = n-;
while(l < r){
tmp = num[i] + num[j] + num[l] + num[r];
if(tmp == ){
flag = ;
break;
}else if(tmp > ){
r--;
}else{
l++;
}
}
}
}
if(flag){
printf("Yes\n");
}else{
printf("No\n");
}
}
return ;
}

最新文章

  1. auto_clipboard
  2. .net c# 服务器共享文件夹 windows远程登陆 代码
  3. html/css小练习3
  4. goldengate for big data 12.3发布
  5. c++实现冒泡排序
  6. CAD迷你看图
  7. linux下查看磁盘空间 [转]
  8. [另开新坑] 算导v3 #26 最大流 翻译
  9. [译] Swift 的响应式编程
  10. [Javascript] Array methods in depth - filter
  11. 【Java框架型项目从入门到装逼】第十五节 - jdbc模糊查询实现(附带详细调试过程)
  12. 微信小程序开发——点击防重的解决方案
  13. 【C/C++】实现牛顿迭代
  14. Jlink使用技巧之虚拟串口功能
  15. 动手动脑-Java的继承与多态
  16. linux minitools+minicom 安装及使用
  17. C#+AE 判断点是否在面内的方法
  18. vb.net的String类型和Bytes转换(C#也适用)
  19. contos7忘记root密码怎么办
  20. bootstrap首页案例

热门文章

  1. Python Twisted系列教程7:小插曲,Deferred
  2. FB联网无人机取得重大进展 实现首次成功着陆
  3. JS||JQUERY常用语法
  4. GY89的使用
  5. delphi 手电筒
  6. Directshow 采集音视频数据H264+AAC+rtmp效果还不错
  7. linux进行Java开发环境的部署
  8. 安卓 textview 换行 不满就换了
  9. ORA-01940:无法删除当前已链接的用户
  10. ora-28547:连接服务器失败,可能是 Oracle Net 管理失败