求助dalao:60分,wa*2,re*2

P1489 猫狗大战

```cpp #include<bits/stdc++.h> using namespace std; int n,a[205],sum=0; bool f[205][205][205];//表示血值和为j的前i个人中第k个人是否选 int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; sum+=a[i]; } f[0][0][0]=1; for(int i=1;i<=n;i++) for(int j=sum/2;j>0;j--) for(int k=n/2;k>=1;k--) f[i][j][k]=f[i-1][j-a[i]][k-1]|f[i-1][j][k]; /*{ if(k>0) f[i-1][j-a[i]][k-1]=1; else f[i-1][j][k]=0; }*/ for(int j=sum/2;j>0;j--) if(f[n][j][n/2]==1) { cout<<j<<' '<<sum-j; break; } return 0; } ``` 忘插入代码了。。。
by happyzy226 @ 2018-10-06 00:16:54


还有,为啥注释部分会引起停止工作?
by happyzy226 @ 2018-10-06 00:18:03


少年啊,首先你这个f数组可以降维,而且你的血量那一维空间开得不够大
by maniac! @ 2018-10-06 07:26:42


注释里else那部分会引起数组下标出现负数啊
by maniac! @ 2018-10-06 07:28:23


@[喵小皮](/space/show?uid=61185) 请问else中为什么有负数呢,i-1,j,k都不是负数啊
by happyzy226 @ 2018-10-06 19:22:12


k是负数啊……你if(k>0)else不就是k<=0的情况了吗
by maniac! @ 2018-10-06 19:51:23


@[喵小皮](/space/show?uid=61185) 噢,谢谢谢谢
by happyzy226 @ 2018-10-06 21:32:12


|