鉴于未来几个月内不同型号硬盘的价格,您的工作是确定在同一时间内维护备份磁盘的最低成本。
假设:
用户必须在一个月的第一天购买新的备份硬盘并出售旧硬盘。
他没有备用磁盘在第一个月的第一天销售。因此,他需要在第一个月的第一天购买新的备份磁盘,而不进行销售。
通过销售硬盘获得的金额比销售时同一型号新硬盘的当前价格低100美元。
相同型号硬盘的价格从未上涨,而且价格始终高于100美元。
输入将不包含可用品牌“B”,后跟否。几个月“M”。下一行将采用所有“B”的品牌名称及其下个月的价格。您可以选择长度为3-10
示例输入
2 4
Brand1 4000 3600 3500 3400
Brand2 3500 3500 3200 3000
什么是所需的输出?我认为它是3500但正确的答案是 3400
这是我的递归实现
#include<stdio.h>
#include<limits.h>
int min(int p,int q){return p<q?p:q;}
int t[2][4]={ {4000, 3600, 3500, 3400},
{3500 ,3500, 3200, 3000} };
int b=2;
int m=4;
int min_v(int n){
int i;
int mint=INT_MAX;
for(i=0;i<b;i++)
mint=min(mint,t[i][n]);
return mint;
}
int min_cost(int b,int m,int sp,int month){
int i,mint;
mint=9999;
if(m==month-1){
printf("MM%d\n",min_v(m)-sp);
return min_v(m)-sp;
}
for(i=0;i<=b-1;i++){
mint=min(mint,t[i][m]-sp+min_cost(b,m+1,t[i][m+1]-100,month));
}
return mint;
}
int main(){
printf("Min cost for backup is %d",min_cost(b,0,0,m));
return 0;
}