算法每日一练|牛客刷题---简单


牛客刷题---简单1

  • 题目要求
    • 题目分析
      • 1. **单行输入一个整形数组**
      • 2. **求和比较过程**
      • 3. **结果输出**

题目要求 一个按照由小到大的整形(包含正整数和负整数)排列的数组 nums,数组最大1000个元素。对数组中元素进行两两求和,计算出两个元素之和的绝对值最小的那个值并输出该绝对值。
【算法每日一练|牛客刷题---简单】按照由大到小的顺序在终端输入一行数字,数字之间用空格分开。输入完成之后回车完成输入。
example:
input: -3 -1 5 7 11 15
output: 2
|-3+5|就是绝对值最小的那一组数据。
题目分析 1. 单行输入一个整形数组
int arr[1000] = { 0 }; int i, j; int num = 0; int len = 0; int a = 0; int b = 0; int min = 0; /* 获取输入数组 */ for (i = 0; i < 1000; i++) { scanf_s("%d", &num); arr[i] = num; char c = getchar(); /* 回车结束数据输入且保证数组不会越界 */ if (c == '\n' || i == 999) { len = i; break; } }

2. 求和比较过程
/* 设置最小初始值 */ min = arr[i] + arr[i+1]; for (i = 0; i < len; i++) { for (j = i + 1; j < len - 2; j++) { a = arr[i] + arr[j]; if (a < 0) { a *= -1; } b = arr[i] + arr[j + 1]; if (b < 0) { b *= -1; } if (a > b) { a = b; } } if (min > a) { min = a; } }

3. 结果输出

    推荐阅读