您的位置:首页 > 科技 > 能源 > 一站式_建设安全监督网_国际站seo优化是什么意思_营销模式

一站式_建设安全监督网_国际站seo优化是什么意思_营销模式

2024/12/24 9:57:23 来源:https://blog.csdn.net/bingw0114/article/details/143692171  浏览:    关键词:一站式_建设安全监督网_国际站seo优化是什么意思_营销模式
一站式_建设安全监督网_国际站seo优化是什么意思_营销模式

题目描述

给定一个随机的整数(可能存在正整数和负整数)数组 nums,请你在该数组中找出两个

数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个两个数 (按从小到大返回)以及

绝对值。

每种输入只会对应一个答案

但是,数组中同一个元素不能使用两遍

输入描述

个通过空格分割的有序整数席列字符串,最多 1000 个整数,目整数数值范围是

[-65535,65535].

输出描述

两数之和绝对值最小值

用例

一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.给定一个随机的整数数组可能存在正整数和负整数

2.找出数组中两个和的绝对值最小的数字

3.返回这两个数字(从小到大返回)以及绝对值

4.输入描述:一个通过空格分割的有序整数字符串,最多1000个整数,且整数数值范围是[-65535,65535]

5.输出描述:两数之和绝对值最小值

二、解题思路

1.首先定义一个数组int nums[1000];用来接收数据

2.定义一个最小值int min = 65535 * 2;用来记录绝对值最小值,定义两个整数int a, b;用于返回

3.然后将数组每两个数字的和计算一遍,计算完和之后

4.查看这个数字的正负,如果是负数那么乘以-1(取绝对值)

5.然后如果比min小那么min变成这个数字,a变成比较小的数字,b变成比较大的数字

三、具体步骤

使用的语言是C

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {int nums[1000];int index = 0;while(scanf("%d", &nums[index++]) != EOF) {// printf("%d\n", nums[index - 1]);}index--;int a, b, min = 65535 * 2;for(int i = 0; i < index; i++) {for(int j = 0; j < index; j++) {if(i == j) continue;int temp = nums[i] + nums[j];// printf("temp[%d] + temp[%d] = %d\n", i, j,temp);if(temp < 0) temp *= (-1);if(temp < min) {min = temp;if(nums[i] < nums[j]) {a = nums[i];b = nums[j];} else {a = nums[j];b = nums[i];}}}}printf("%d %d %d\n", a, b, min);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com