最大乘积子序列
給一個浮點數序列,取最大乘積子序列的值,例如 -2.5,4,0,3,0.5,8,-1,則取出的最大乘積子序列為3,0.5,8。
需要用兩個變量保存包括當前位置序列的最大乘積和最小乘積,
然后還需要比較兩次,一次是最大乘積和最小乘積是否需要互換,還有一次是不是只選當前位置就是最好的
double maxMulti(double v[], int n) {double maxt = 1;double mint = 1;double maxv = v[0];for(int i = 0; i < n; ++i) {if(v[i] == 0) {maxt = 1;mint = 1;if (v[i] > maxv)maxv = 0;}else{double oriMint = mint;double oriMaxt = maxt;double minrst = mint * v[i];double maxrst = maxt * v[i];maxt = maxrst > minrst ?maxrst: minrst;mint = maxrst > minrst ? minrst : maxrst;if (maxt < v[i])maxt = v[i];if (mint > v[i])mint = v[i];if (maxv < maxt)maxv = maxt;}}return maxv; }
總結