今天被要求写一段程序,题目如下; 已知过去四周内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。
不同的实现方式,差距很大。。。
呵呵,多想想,办法总比困难多!
原文:http://www.cnblogs.com/dragonsuc/p/4335647.html