TYVJ 1095 美元 解题报告
f[i]表示第i天获得的最大的美元,要是浮点类型(double),f[i] = max{f[i - 1], f[j] * num[i] / num[j]}, 0 <= j < i, f[0] = 100,1<= i < n
代码如下:
#include <stdio.h> #include <stdlib.h> #define max(a, b) ((a)>(b)?(a):(b)) double f[100]; int num[100]; int main(int argc, char **argv) { int i, j; int n; scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d", &num[i]); } f[0] = 100; for(i = 1; i < n; i++){ //要等于昨天的钱 f[i] = f[i - 1]; for(j = 0; j < i; j++){ f[i] = max(f[i], f[j] * num[j] / num[i]); } } printf("%.2lf\n", f[n - 1]); return 0; }