在编码时,我遇到了运行时错误。这是我的代码:
int f(int a[],int n,int sum)
{
int dp[sum+1][n+1];
for(int i=0;i<=n;i++)
dp[0][i]=1;
for(int i=1;i<=sum;i++)
dp[i][0]=0;
for(int i=1;i<=sum;i++)
{
for(int j=1;j<=n;j++)
{
dp[i][j]=dp[i][j-1];
if(i>=a[j-1])
dp[i][j]=(dp[i][j])^(dp[i-a[j-1]][j-1]);
}
}
return dp[sum][n];
}
这里 sum 总是正数。经过大量调试后,我无法得到答案所以在匹配我从解决方案中得到的答案之后。这就是答案。
bool f(int a[],int n,int sum)
{
bool dp[sum+1][n+1];
for(int i=0;i<=n;i++)
dp[0][i]=true;
for(int i=1;i<=sum;i++)
dp[i][0]=false;
for(int i=1;i<=sum;i++)
{
for(int j=1;j<=n;j++)
{
dp[i][j]=dp[i][j-1];
if(i>=a[j-1])
dp[i][j]=(dp[i][j])||(dp[i-a[j-1]][j-1]);
}
}
return dp[sum][n];
}
所以我的问题是为什么 int 不能转换为 bool。PS:而不是|| 我也试过 | 因为这是按位运算符,但仍然出现运行时错误。有人请帮助我得到答案。