以下是可以正常运行的C++代码程序:
#include<iostream>
#include<cstring>
const int maxn = 1510;
long long minnum[maxn][maxn];
using namespace std;
int main() {
int n;
cin>>n;
for(int i = 0; i < n; i++)
for(int j = 0; j <= i; j++)
cin>>minnum[i][j];
for(int i = n-2; i >= 0; i--)
for(int j = 0; j <= i; j++)
if(minnum[i+1][j] < minnum[i+1][j+1])
minnum[i][j] = minnum[i][j] + minnum[i+1][j];
else minnum[i][j] = minnum[i][j] + minnum[i+1][j+1];
cout<<minnum[0][0];
return 0;
}
但是将long long minnum[maxn][maxn]开在main函数内,并加一句”memset(minnum, 0, sizeof(minnum));"在Windows下运行,会出现无法输入的情况,这是为什么?
#include<iostream>
#include<cstring>
const int maxn = 1510;
using namespace std;
int main() {
long long minnum[maxn][maxn];
memset(minnum, 0, sizeof(minnum));
int n;
cin>>n;
for(int i = 0; i < n; i++)
for(int j = 0; j <= i; j++)
cin>>minnum[i][j];
for(int i = n-2; i >= 0; i--)
for(int j = 0; j <= i; j++)
if(minnum[i+1][j] < minnum[i+1][j+1])
minnum[i][j] = minnum[i][j] + minnum[i+1][j];
else minnum[i][j] = minnum[i][j] + minnum[i+1][j+1];
cout<<minnum[0][0];
return 0;
}
临时变量太大了。
放在main函数里,long long minnum[maxn][maxn]数组就是个局部变量,局部变量没有这么大空间给你,所以失败了
放在main函数之上,就是全局变量,全局变量空间大,能够分配给你这个空间,所以OK
太大了,long long minnum[1050][1050]局部变量没有这么大空间给你,放在main函数外吧,应该就没问题了