题目描述
算法设计+题目分析
吐槽一下:
不知道是不是我的方法有问题,虽然思路挺简单的,但是感觉代码量对于第二题来说有一点点大呀。
分析题目:
1、读入所有的数;
2、对所有的数求与其他的数的差值的绝对值,找到这个差的绝对值的最小值;
3、打印最小值。
算法复杂度:O(n^2)
更好的方法:
1、对所有的数排序;
2、最小差值肯定在相邻两个数之间;
3、找到邻数最小差值的绝对值,打印它。
算法复杂度:O(nlogn)
注意点+记录点
无
代码(100分)
环境
Visual C++6.0
#include <stdio.h>
#include <algorithm>
using namespace std;
int N[1010];
int main(){
int n;
scanf("%d", &n);
for (int i=0; i<n; i++){
int t;
scanf("%d", &t);
N[i]=t;
}
int m=10010;
for(int ii=0; ii<n; ii++){//暴力搜索全部的组合
for (int j=0; j<n; j++){
if (ii==j) continue;
int temp=N[ii]-N[j];
temp=abs(temp);
if (temp<m) m=temp;//判断是否小于目前保存的最小值
}
}
printf("%d", m);
}
感谢链接
无