两层循环要交换顺序,要这样写:
for(int i=1;i<=k;i++) { for(int j=1;j<=n;j++) { if(f[i-a[j]]==1&&bj[i]==0)f[i]=1; } }
而不是这样写:
for(int i=1;i<=n;i++) { for(int j=a[i];j<=k;j++) { if(f[j-a[i]]==1&&bj[j]==0)f[j]=1; } }
我赛时因为这个一直WA12个点,导致E题也没时间做(这次E挺水的),结果1500->600