标签:
给你一个长度为n的整数序列A1,A2,……,An,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大。
2 3 5 2 1 6 2 3 6 2 1 -1
4 1 3 7 3 6
此题用穷举法时间代价为O(n^2),会超过时间限制。所以要用下面这种方法。
#include<stdio.h> int main() { int T; scanf("%d", &T); while (T--) { int n, m, s = -200000; scanf("%d", &n); scanf("%d", &m); int max = m, index = 0, left, right; //index用于记录数组最大值 for (int i = 1; i < n; i++){ //left,right分别记录下标 scanf("%d", &m); if (max-m > s) { s = max-m; left = index; right = i; } if (m > max) {//在寻找最大差值的同时,寻找最大值。 index = i; max = m; } } printf("%d %d %d\n", s, left+1, right+1); } }
标签:
原文地址:http://www.cnblogs.com/Rhett-Q/p/5440349.html