第一种方法:
用两重循环对每对点都试一下,然后取最大值即可,时间复杂度为O(n2)
#include <iostream> #include <algorithm> using namespace std; int maxIndexDiff(int a[],int n){ int maxDiff = -1; for(int i = 0 ; i < n; ++ i){ for(int j =n-1; j > i ; --j){ if(a[j]>a[i]) maxDiff = max(maxDiff,j-i); } } return maxDiff; } int main(){ int a[]={9,2,3,4,5,6,7,8,18,0}; int n = sizeof(a)/sizeof(a[0]); int maxDiff = maxIndexDiff(a,n); cout<<maxIndexDiff(a,n)<<endl; }