题解洛谷P1968(c++解法)美元汇率

题目传送门

思路

记录最大能达到多少马克和多少美元。
每次将上次的美元数换算成马克与上一次的马克取最大值,
再将上次的马克数换算成美元与上一次的美元取最大值。
最后输出美元数即可。
为了省空间,我没用数组,动态做的。

代码如下:

#include
#include
#include
#include
#include
#include
#include
using namespace std;
int main(){
    double dp1,dp2,tmp;//由于dp1的值变化后,无法计算dp2,所以要用临时变量记录未作处理前的dp1
    int n,i,a;
    cin>>n;
    dp1=100.0;//初始有100美元
    dp2=0;
    for(i=1;i<=n;i++){
        cin>>a;
        tmp=dp1;
        dp1=max(dp1,(dp2/a*100));//将马克换成美元进行比较
        dp2=max(dp2,(tmp/100*a));//将美元换成马克进行比较
    }
    printf("%.2lf",dp1);//最后输出美元
    return 0;
}

你可能感兴趣的:(penguin)