文章

8

粉丝

37

获赞

0

访问

1.0k

头像
中南大学机试真题爬楼梯
我要提问
发布于2024年3月13日 12:21
阅读数 113

为什么这段代码dp数组必须在main函数外面定义才行,如果我定义到main函数里面程序就什么都不会执行就直接结束了,还有如果用scanf输入就会出现输出超限的错误但是改成cin输入就ac了,这两个问题是为啥啊,求大佬解答

#include<iostream>
#include<vector>
#include<map>
#include<string>
#include<algorithm>
#include<utility>
#include<math.h>
#include<queue>
using namespace std;
const int p=pow(10,9)+7;
const int c=pow(10,6);
int dp[c+1];
int main(){

dp[0]=1;
dp[1]=1;
for(int i=2;i<=c;i++)dp[i]=(dp[i-1]+dp[i-2])%p;
int n;
while(scanf("%d",&n)){
 cout<<dp[n]%p<<endl;
}
return 0;
}

 

登录查看完整内容


登录后发布评论

1 条评论
snake VIP
2024年3月13日 12:43

第一个问题,当数组比较大的时候需要放在外面,也就是定义为全局变量才行,因为函数内部的栈空间比较小。

第二问题是多组输入的问题

C语言的多组输入格式是

while(scanf("%d",&n)!=EOF)

所以直接while(scanf("%d",&n))是不行的

而C++的多组输入格式是

while(cin>>n)

所以改成cin可以直接放进while里

赞(1)