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;
}