今日頭條2017計算機實習生c++第一道題
阿新 • • 發佈:2019-01-07
1、記不清楚了,大體意思就是給一個數組大小n,然後給n個數,組成一個離散序列,就是求極大值所在的族大區間,將這個最大區間的左側和右側座標x值輸出。
例如:
輸入:
n
n長度的整數陣列
輸出:
區間的範圍
樣例:
10
1 3 1 2 5 4 3 1 9 10
樣例輸出:
2 7
程式碼:
#include<iostream> #include<vector> using namespace std; struct MyStruct { int leftx; int righty; int length; }; bool operator>(const MyStruct &a, const MyStruct &b) { return (a.length > b.length) ? true : false; } int main() { MyStruct data; MyStruct datatemp; int n = 0; cin >> n; int temp0,temp1; bool flag0, flag1; flag0 = flag1 = false; cin >> temp0; for (size_t i = 1; i < n; i++) { cin >> temp1; if (temp1>temp0) { if (flag0 == false) { flag0 = true; datatemp.leftx = i-1; datatemp.righty = 0; datatemp.length = 0; } else { if (flag1==true) { datatemp.righty = i-1; datatemp.length = datatemp.righty - datatemp.leftx; if (datatemp>data) { data = datatemp; } datatemp.leftx = i-1; datatemp.righty = 0; datatemp.length = 0; flag0=true; flag1 = false; } } } else { if (flag0==true) { flag1 = true; } } temp0 = temp1; } cout << data.leftx << ' ' << data.righty; return 0; }