方法一:穷举
#include<iostream> #include<algorithm> #define MAX 1000 using namespace std; int a[] = {-3,4,2,7,25,0,8,-2}; int getMin(int a[],int i,int j) { return abs(a[i]-a[j]); } int main() { int len = sizeof(a)/sizeof(int); int min = MAX; for(int i=0;i<len-1;i++) { for(int j=i+1;j<len;j++) { int num = getMin(a,i,j); min = min>num?num:min; } } cout<<"min: "<<min<<endl; getchar(); return 0; }
方法二:排序后,一遍扫描
#include<iostream> #include<algorithm> using namespace std; int a[] = {-3,4,2,7,25,0,8,-2}; int main() { int len =sizeof(a)/sizeof(int); sort(a,a+len);//调用sort(b,e)方法 int min =50; for(int i=len-1; i>0;i--) { min = (abs(a[i]-a[i-1])>min)?min:abs(a[i]-a[i-1]); } cout<<"min "<<min<<endl; getchar(); return 0; }
方法三:动态规划