• 绝对值最小


    绝对值最小

    题目详情:

    给你一个数组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

    发布公司:

    CSDN
    CSDN
    难度等级:
    答题时长: 120 分钟
    编程语言要求: C C++ Java C#

    此题由本人AC,不规范之处,有更好的解题思路

    还请大家多多指教,谢谢!

    有任何问题请联系fjinhao@qq.com

    下面附上代码

    #include <stdio.h>
    #include <math.h> 
    #define N 100000
    
    int absm(int *p,int n)
    {
    	int i, j, min = -1,q = 0;
    	for ( i=0; i<n; ++i ) {
    		for ( j=i; j<n; ++j ) {
    			q = abs(p[i] + p[j]);
    		     if (min > q || min == -1) {
    		     	min = q;
    			 }
    	    }
    	}
    	return min;
    }
    int main()
    {
    	int n, a[N],i,min;
    	while ( 1 == scanf("%d", &n))
    	{
    		for ( i=0; i<n; ++i ) {
    			scanf("%d",&a[i]);
    		}
    		min = absm(a,n);
    		printf("%d
    ",min);
    	}
    	
    	return 0;
    }


  • 相关阅读:
    【webpack系列】从零搭建 webpack4+react 脚手架(一)
    js常见的面试题
    java中读取资源文件的方法
    java servlet的域对象
    java 静态资源访问详解
    java servlet简述
    mysql免解压版的配置
    java网络编程
    java单例设计模式
    java多线程及线程安全详解
  • 原文地址:https://www.cnblogs.com/fayne/p/7224836.html
Copyright © 2020-2023  润新知