今天被要求寫一段程式,題目如下; 已知過去四周內20個交易日天內黃金的價格,求過去20天內最大差值?
a[20]={2,5,1,6,7,9,10,18...1}
我當時想的是差值,肯定是兩天交易日之間的差值,第1天與第2天之間的差值,第2天與第3天之間的差值,第一天與第三天之間的差值,他們之間的最大值??
於是,很有自信地寫了:
int a[20]={2,5,1,6,7,9,10,18...1}; int b[19]={0}; int max=0; for(int m=1;m<20;m++) { int tempmax=0; //儲存差值資料 for(int n=0;n<19;n++) { b[n]=0; } //計算差值 for(int i=m;i<m;m++) { b[i]=a[i]-a[i-1]; } //求差值中最大值 for(int n=0;n<19;n++) { if(b[n]>tempmax) { tempmax=b[n]; } } if(tempmax>max) { max=tempmax; } }
兩天之差,我的演算法複雜度n*(n-1)*(n-2)**1;
同學們,我的程式碼寫得對嗎?這程式碼寫得多好呀!!我很得意。。
精彩時刻就要來了,我先插播一則廣告。。
最好的電力模型檢測工具、最好的電力通訊測試工具盡在(http://www.mms61850.com/_d4.htm);
最好的電力模型檢測工具、最好的電力通訊測試工具盡在(http://www.mms61850.com);
最好的電力模型檢測工具、最好的電力通訊測試工具盡在(http://www.mms61850.com);
最好的電力模型檢測工具、最好的電力通訊測試工具盡在(http://www.mms61850.com);
最好的電力模型檢測工具、最好的電力通訊測試工具盡在(http://www.mms61850.com);
最好的電力模型檢測工具、最好的電力通訊測試工具盡在(http://www.mms61850.com);
最好的電力模型檢測工具、最好的電力通訊測試工具盡在(http://www.mms61850.com);
我要的是任意兩天之間的最大差值,不一定要兩天之間差值,我們不要兩天之間的差值,把這個彎轉過來,好辦了。
我得到最大值與最小值,那麼他們之間的差值是不是任意兩天的最大差值呢??
1 int a[20]={2,5,1,6,7,9,10,18...1}; 2 //最大值 3 int tempmax=a[0]; 4 //最小值 5 int tempmin=a[0]; 6 int max; 7 for(int m=1;m<20;m++) 8 { 9 if(a[m]>tempmax) 10 { 11 tempmax=a[m]; 12 } 13 else if(a[m]<tempmin) 14 { 15 tempmin=a[m]; 16 } 17 } 18 //結果就算我們需要的 19 max= tempmax-tempmin;
演算法複雜度為n。
不同的實現方式,差距很大。。。
呵呵,多想想,辦法總比困難多!