0
这是一个用C++ 11编写的程序。当N> = 10时,这段代码为什么会冻结?
当text.in的值为N < 10此程序正常工作。然而,当N增加到11时,它会冻结,似乎永远持续下去。为什么会这样呢?
#include <cstdio>
using namespace std;
int dp[40][391]={0};
int main() {
FILE* in = fopen("text.in","r");
FILE* out = fopen("text.out","w");
int N;
fscanf(in,"%d",&N);
int sum = N*(N+1)/2;
for (int i=0; i<=N; i++) dp[0][i]=1;
if (sum%2==1) {fprintf(out,"0"); return 0;}
for (int n=1; n<=sum; n++) {
for (int k=1; k<=N; k++) {
if (n-k>=0) dp[n][k]=dp[n-k][k-1];
dp[n][k]+=dp[n][k-1];
}
}
fprintf(out,"%d",dp[sum/2][N]/2);
return 0;
}