say1116   1년 전

#include

using namespace std;

1.long long d[202][202];

int main()
{
int n, k;
cin >> n >> k;
long long mod = 100000000;
2.long long d[202][202];

d[0][0] = 1LL;
for (int i = 1; i <= k; i++)
{
for (int j = 0; j <= n; j++)
{
d[i][j] = 0;

for (int l = 0; l <= j; l++)
{
d[i][j] += d[i - 1][j - l];
d[i][j] %= mod;
}
}
}

cout << d[k][n];
return 0;
}

----------------------------------------------------------------------

이차원 배열 d를 1번 위치에 두면 에러가 안나는데

2번에 두면 에러가 나는 이유가 무엇인가요?

jung2381187   1년 전

전역변수와 지역변수는 메모리에서 할당되는 위치가 다릅니다. 지역변수는 스택 영역에 할당되는데, 이 영역은 대략 몇 MB정도밖에 하지 않기 때문에 큰 배열을 선언할 경우 메모리 부족이 뜹니다. 반면에 전역변수는 굉장히 큰 배열도 무리 없이 할당시켜줄 수 있습니다.

스택 영역, 힙 영역 등에 대해 알아보시길 권합니다.

alice   1년 전

전역변수는 초기값이 0인 반면, 지역변수는 초기화를 제대로 해주지 않으면 쓰레기값이 들어갑니다.

say1116   1년 전

감사합니다!

댓글을 작성하려면 로그인해야 합니다.