C++ 当N>=10时,为什么此代码会冻结?

C++ 当N>=10时,为什么此代码会冻结?,c++,c++11,C++,C++11,这是一个用C++11编写的程序 当text.in的值为N时,我很惊讶它与N==9一起工作 你定义 int dp[40][391] 你在里面读/写 if (n-k>=0) dp[n][k]=dp[n-k][k-1]; dp[n][k]+=dp[n][k-1]; 第一个索引n的范围为1到和,其中 因此,如果N=9,则sum大于40[N==9时sum==45;N==10时sum==55;N==11时sum=66] 因此,当N==11时,当第一个索引的最高合法值为39时,就可以编写dp[

这是一个用C++11编写的程序


当text.in的值为N时,我很惊讶它与N==9一起工作

你定义

int dp[40][391]
你在里面读/写

if (n-k>=0) dp[n][k]=dp[n-k][k-1];
   dp[n][k]+=dp[n][k-1];
第一个索引n的范围为1到和,其中

因此,如果N<9,总和小于40;如果N>=9,则sum大于40[N==9时sum==45;N==10时sum==55;N==11时sum=66]

因此,当N==11时,当第一个索引的最高合法值为39时,就可以编写dp[66][k]

灾难的妙方

if (n-k>=0) dp[n][k]=dp[n-k][k-1];
   dp[n][k]+=dp[n][k-1];
int sum = N*(N+1)/2;