文章
8
粉丝
71
获赞
0
访问
9.6k
为什么这段代码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;
}
登录后发布评论
第一个问题,当数组比较大的时候需要放在外面,也就是定义为全局变量才行,因为函数内部的栈空间比较小。
第二问题是多组输入的问题
C语言的多组输入格式是
while(scanf("%d",&n)!=EOF)
所以直接while(scanf("%d",&n))是不行的
而C++的多组输入格式是
while(cin>>n)
所以改成cin可以直接放进while里