擂台赛要开始了,现在有n名战士,其中第i名战士的战斗力为 ai。现在准备从这些战士中挑两名战士进入擂台赛进行对战,由于观众们更喜欢看势均力敌的比赛,所以我们也要挑选两个战斗力尽可能相近的战士进行参赛。那么现在请问,战斗力最接近的两名战士,战斗力之差为多少?
如:
3
3 5 5
输出: 0
如:
5
1 10 4 9 6
输出: 1
思路:两层for循环进行嵌套,筛选出满足条件的最小的战斗力差值
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {
int n = 0;
scanf("%d", &n);
int arr[1000];
int result = 100;
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < n; i++) {
for (int j = 1; j < n; j++) {
int diff = arr[j] - arr[i];
if (diff < result && diff >= 0 && i != j) {
result = diff;
}
}
}
printf("%d\n", result);
return 0;
}
此代码可以完成 例题中的所有情况
代码的问题:(使用的时候可以根据自己的需求进行修改 目前此代码仍有以下问题)
1.仅能单次执行 不能进行多次输入
2.如果用户要求最初的数组输入数字特别多将会发生错误
3.result应该尽可能修改的特别大 否则用户输入超过result的值将无法进行比较