绝对值最小

题目详情:

给你一个数组A[n],请你计算出ans=min(|A[i]+A[j]|)(0<=i,j<n).

比如:A={1, 4, -3},

则:

|A[0] + A[0]| = |1 + 1| = 2.

|A[0] + A[1]| = |1 + 4| = 5.

|A[0] + A[2]| = |1 + (-3)| = 2.

|A[1] + A[1]| = |4 + 4| = 8.

|A[1] + A[2]| = |4 + (-3)| = 1.

|A[2] + A[2]| = |(-3) + (-3)| = 6.

所以ans=1.

输入描写叙述:

有多组測数数据,每组数据有两行,第一行包括一个正整数n(0<n<=100000),第二行包括n个整数,分别表示A[0],A[1],A[2],....,A[n-1],(|A[i]|<2^30)。

输入以文件结束。

输出描写叙述:

对于每组数据。输出对应的答案。

答题说明:

输入例子:

3

1 4 -3

1

2

3

-1 -2 -5

3

1 2 3

2

0 5

输出例子:

1

4

2

2

0

/*
解题思路:
对数组进行高速排序(排序后能够降低枚举的次数)。然后枚举求解
*/
#include "stdio.h"
#include "stdlib.h" #define abs(x) ((x)>0? (x):-1*(x))
#define maxn 100000+10
int a[maxn],n; int cmp(const void* _a,const void* _b){
int *a=(int *)_a;
int *b=(int *)_b;
return (*a-*b);
} int main()
{
int ans;
while(scanf("%d",&n)&&n>0)
{
int flag=1;
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(!a[i]){
ans=0; flag=0;
}
} if(flag){
qsort((void *)a, n, sizeof(int), cmp);
ans=abs(a[0]*2);
for(int i=0;i<n;i++){
int min=abs(2*a[i]);
for(int j=i+1,tmp;j<n;j++){
tmp=abs(a[i]+a[j]);
if(tmp<min){
min=tmp;
}else{ //不存在比min更小的解,退出内循环
break;
}
}
if(min<ans) ans=min;
}
}
printf("%d\n",ans);
} return 0;
}

代码超时的说,求高手指点,感激不尽

CSDN挑战编程交流群:372863405

CSDN挑战编程——《绝对值最小》的更多相关文章

  1. CSDN挑战编程——《数学问题》

    数学问题 题目详情: 给你两个长度为n的正整数序列分别为{a1,a2,a3...an},{b1,b2,b3...bn},0<ai,bi<=100: 设S=max{x1*a1+x2*a2+x ...

  2. CSDN挑战编程——《金色十月线上编程比赛第二题:解密》

    金色十月线上编程比赛第二题:解密 题目详情: 小强是一名学生, 同一时候他也是一个黑客. 考试结束后不久.他吃惊的发现自己的高等数学科目竟然挂了,于是他果断入侵了学校教务部站点. 在入侵的过程中.他发 ...

  3. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  4. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  5. csdn在线编程里面的一个排列组合题

    是csdn在线编程里面的一个问题 回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串. 输入:非空仅由小写字母组成的字符 ...

  6. C语言:输入10个整数,找出其中绝对值最小的数

    1 输入10个整数,找出其中绝对值最小的数(10分) 题目描述 输入10个整数,找出其中绝对值最小的数 输入 十个整数 输出 绝对值最小的数 样例输入 -10 -2 30 40 50 60 70 80 ...

  7. 挑战编程 uva100 3n+1

    挑战编程 刘汝佳 的第一道习题  热身题 熟悉下提交格式 题意 #include <iostream> #include <algorithm> using namespace ...

  8. TZOJ 4024 游戏人生之梦幻西游(连续子段和绝对值最小)

    塔神酷爱玩梦幻西游这款游戏,这款游戏以著名的章回小说<西游记>故事为背景,透过Q版的人物,营造出浪漫的网络游戏风格.塔神以追求天下无敌为目标,从一个默默无闻的菜鸟,打拼到了登峰造极的大师, ...

  9. 编程算法 - 最小的k个数 红黑树 代码(C++)

    最小的k个数 红黑树 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入n个整数, 找出当中的最小k个数. 使用红黑树(multiset) ...

随机推荐

  1. python自动化测试学习笔记-4常用模块

    常用模块 1.os 2.sys 3.random 4.string 5.time 6.hashlib 一.os模块 os模块主要用来操作文件.目录,与操作系统无关.要使用os模块首先要导入OS模块,用 ...

  2. celery定时执行ansible api返回为空的问题

    有两种方法解决这个问题,就是关闭assert:1.在celery 的worker启动窗口设置export PYTHONOPTIMIZE=1或打开celery这个参数-O OPTIMIZATION2.注 ...

  3. centos安装composer以及使用国内镜像

    下载composer.phar文件 curl -sS https://getcomposer.org/installer | php 将composer.phar移动到环境变量中并且更名为compos ...

  4. the interview questions of sql server

    1.一道SQL语句面试题,关于group by 表内容: 2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-0 ...

  5. GitLab Runner and CICD

    # Linux x86-64 sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaw ...

  6. Java引用jar的优化

    一般java的类文件开头都是各种引用: 如 上图的引用可以写成

  7. Windows10开启热点

    1.以网线的连接方式,已经连接. 2.打开CMD 3. 开启热点 3.1设置热点名称和密码 netsh wlan set hostednetwork mode=allow ssid=name key= ...

  8. React Component 生命周期

    一般而言 Component 有以下三种生命周期的状态: Mounting:已插入真实的 DOM Updating:正在被重新渲染 Unmounting:已移出真实的 DOM 针对 Component ...

  9. Android开发之ThreadLocal原理深入理解

    [Android]ThreadLocal的定义和用途 ThreadLocal用于实现在不同的线程中存储线程私有数据的类.在多线程的环境中,当多个线程需要对某个变量进行频繁操作,同时各个线程间不需要同步 ...

  10. 在PHP中调用php_ssh实现远程登陆linux服务器并执行shell脚本。

    这个功能主要用于在web端利用程序对远程服务器进行操作,通过PHP_ssh执行shell脚本来实现. 首先要安装php_ssh2组件,linux中centos7下有ssh2源,直接安装.window下 ...