这个是正确的
这个输出错误
这两个代码有什么区别吗我觉得两个代码逻辑和方法都差不多,没差别啊
下面那个,每次输入都要算一次,容易超时
并且vector<int>最大值要比 long long int 小,看你的题目n是否很大,造成溢出
你试试不要用vector,用数组,像这样:
#include<bits/stdc++.h>
using namespace std;
int dp[100005];
int n;
int fun(int x)
{
int dp[n+5];
dp[1]=1;
dp[2]=2;
for(int i=3;i<=n;i++) dp[i]=dp[i-1]+dp[i-2];
return dp[n];
}
int main()
{
while(cin>>n)
{
cout<<fun(n)<<endl;
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:从你给出的代码和输出结果来看,这两段代码确实在逻辑和方法上没有区别。然而,输出结果却有所不同。通过观察输出结果的截图,可以发现,输出结果1中的文字是清晰可读的,而输出结果2中的文字却是乱码。这表明,输出结果2中的文字存在字符编码问题。
具体来说,输出结果1中的文字是在一个正常的字符编码环境中输出的,而输出结果2中的文字可能是在一个错误的字符编码环境中输出的。造成这种情况的原因可能是代码文件(包括代码1和代码2)的字符编码方式与输出环境的字符编码方式不匹配。
为了解决这个问题,你可以尝试以下几种方法:
确保你的代码文件的字符编码方式与输出环境的字符编码方式一致。你可以使用一个文本编辑器(如Notepad++)来查看和修改代码文件的字符编码方式。常见的字符编码方式包括UTF-8和GBK等。
确保你的代码文件的内容本身没有字符编码问题。你可以再次检查代码文件的内容,确保其中的文字没有乱码或错误的编码。
尝试在代码中显式地指定输出环境的字符编码方式。你可以使用C++的locale类来设置输出环境的字符编码方式。具体的方法可以参考C++的locale类的文档。
以上是我对这个问题的分析和解决方案,希望对你有帮助。如果你有其他问题,请随时提问。