从ikun做起的励志哥 2024-05-01 09:43 采纳率: 0%
浏览 4

动态规划c++青蛙台阶问题

我想询问一个代码问题 我是一个编程初学者 正在学习动态规划 但是我编程的时候遇到了一个小问题
用这行代码进行编译就会在第四行的位置报错 不过将数组赋值移动到主函数就没事了 这是为什么

#include<iostream>
using namespace std;
int d[10005];
   d[1]=1;
   d[2]=2;
int main(){
   int n;
   cin>>n;
   for(int i=3;i<=n;i++){
       d[i]=(d[i-1]+d[i-2]);
   }
    cout<<d[n]<<endl;
    return 0;
}

  • 写回答

5条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-05-01 09:43
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:为什么把数组赋值语句放在外部,代码就会报错? 解答:因为在C++中,数组的初始化必须在声明中进行,或者在定义时进行初始化。在这份代码中,数组d的声明和初始化语句在函数外部,所以编译器会认为d只是一个声明了大小但未进行初始化的数组,所以在第四行的赋值语句处报错。要解决这个问题,可以将数组的声明和初始化语句放在main函数中,或者像下面这样,在声明数组时同时进行初始化:
    int d[10005] = {0, 1, 2};
    

    这样就可以避免在赋值语句处出错了。 案例代码:

    #include <iostream>
    using namespace std;
    int main(){
        int n;
        int d[10005] = {0, 1, 2};
        cin >> n;
        for(int i = 3; i <= n; i++){
            d[i] = d[i-1] + d[i-2];
        } 
        cout << d[n] << endl;
        return 0;
    }
    

    这里将数组的声明和初始化语句放在了main函数中,也可以直接在数组声明时进行初始化,代码如下:

    #include <iostream>
    using namespace std;
    int d[10005] = {0, 1, 2};
    int main(){
        int n;
        cin >> n;
        for(int i = 3; i <= n; i++){
            d[i] = d[i-1] + d[i-2];
        } 
        cout << d[n] << endl;
        return 0;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月1日

悬赏问题

  • ¥20 c#实现打开word的功能,并且需要安装成windows服务,word打不开怎么办
  • ¥15 python用ARIMA时间预测模型预测数据出错,急!
  • ¥30 为什么后端传给前端vue的河流json数据不在地图中显示出来
  • ¥50 关于弹性波动方程求解的问题:
  • ¥100 C# 做 10个串口数据采集;采集数据填到 EXE表中;1路与PLC MODBUS通讯 ;要求速度尽量快点; 有能做完整程序的单聊,重酬
  • ¥15 P0口接8个LED,编写程序,并绘制proteus仿真电路原理图
  • ¥15 java,maven
  • ¥15 单独编译安卓13车载evs
  • ¥20 完成实验一,要求按照图片要求,实验报告一定要按照要求,并且回答简答题,截止日期明天中午12:00
  • ¥30 孪生网络模型,当训练集与测试集共用一个数据集时,训练准确率为100%,而测试准确率仍在50%左右浮动(正常来说测试的都是学习过的数据,准确率应为100%)。【不要GPT及任何大模型回答】