鱼C论坛

 找回密码
 立即注册
查看: 503|回复: 1

对于某些情况会答案错误

[复制链接]
发表于 2024-3-13 20:22:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一个特别的单行街道在每公里处有一个汽车站。顾客根据他们乘坐汽车的公里使来付费。例如下表就是一个费用的单子。   没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1< =n< =100),它可以通过无限次的换车来完成旅程。最后要求费用最少。

#include<iostream>
using namespace std;
#define MAX 100
int main()
{
    int fare[11];
    for (int g = 1; g < 11; g++) {
        cin >> fare[g];
    }
    int dp[MAX] = { 0,fare[1],fare[2],0 };
    int total;
    cin >> total;
    for (int i = 2; i <= total; i++) {
        int c = fare[1] - (fare[i + 1] - fare[i]);
        if (((fare[i + 2] - fare[i + 1]) - (fare[2] - fare[1])) < c) {
            dp[i + 1] = fare[i + 1];
        }
        else {
            int chu = total / i;
            int yu = total % i;
            dp[total] = chu * fare[i] + fare[yu];
            break;
        }
    }
    cout << dp[total];
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-13 20:23:34 | 显示全部楼层
这段代码中存在几个问题。

首先,你定义了一个大小为10的循环,但是在每次循环中,你只读取了一次输入。所以实际上只会读取一次费用。

其次,在声明 `dp` 数组时,你使用了`{0, fare, fare, 0}`的语法,但是这样并不能正确初始化数组,应该使用花括号 `{}` 来初始化。

最后,在第二个循环中,你使用了条件 `i < total` 来控制循环次数,但是这样会导致循环终止的条件不准确。因为总距离可能大于100,因此你应该使用 `total <= 100` 来作为循环终止的条件。

下面是修复了以上问题的代码示例:
++
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
    int fare[10];
    for (int g = 0; g < 10; g++) {
        cin >> fare[g];
    }
    
    int dp[101];
    dp[0] = 0;
    for (int i = 1; i <= 100; i++) {
        dp[i] = fare[0] * i; // 初始化为直接乘以第一站的费用
        for (int j = 1; j <= i; j++) {
            dp[i] = min(dp[i], dp[j] + fare[i-j]); // 动态规划求最小费用
        }
    }
    
    int total;
    cin >> total;
    cout << dp[total] << endl;

    return 0;
}

这段代码中使用了动态规划的思想来解决问题。在循环中,我们逐个计算从1公里到目标距离的最小费用,并将结果保存在 `dp` 数组中。

最后,输出目标距离的最小费用即可。希望对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 06:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表