问题标题: 酷町堂:3916 绿色出行

0
0
刘小禾
刘小禾
新手守护
新手守护

有谁能提供这道题的思路?

刘小禾在2020-08-08 16:36:24追加了内容

#include <algorithm>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cstdio>
#include <cmath>
#include <list>
using namespace std;
int a[700],f[700];
int main(){
    //freopen("math.in","r",stdin);
    //freopen("math.out","w",stdout);
    int n;
    for(int i=1;i<=10;i++){
        cin>>a[i];
    }
    cin>>n;
    f[1]=a[1];
    for(int i=1;i<=n;i++){
        int minn=1010;
        if(i<=10){
            for(int j=i-1;j>=1;j--){
                minn=min(minn,f[j]+f[i-j]);
            }
            minn=min(minn,a[i]);
        }
        else{
            for(int j=i-1;j>=i-10;j--){
                minn=min(minn,f[j]+f[i-j]);
            }
        }
        f[i]=minn;
    }
    cout<<f[n];
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

刘小禾在2020-08-08 16:38:50追加了内容

40分


0
0
0
0
0
王文博
王文博
缔造者之神
缔造者之神

能不能采纳我????

我太穷了

0
0
0
0
朱欣然
朱欣然
高级守护
高级守护

核心代码:

f[0]=0;

for(int i=1;i<=n;i++){

     for(int j=1;j<=min(i,10);j++){//枚举相距的距离j

            f[i]=min(f[i],f[i-j]+a[j]);

    }

} cout<<f[n];

0
0
我要回答