题解里排序后双指针的做法的代码
while(l<=r)
{
if(a[l]+a[r]<=W)
l++,r--,ans++;
else
r--,ans++;
}
应该改成
while(l<=r)
{
if(l==r) {
ans++;
break;
}
if(a[l]+a[r]<=W)
l++,r--,ans++;
else
r--,ans++;
}
判断只剩一个纪念品的边界情况,因为一个纪念品不能复制一个装成一组
在这道题里这个代码不判断边界情况其实对结果没有任何影响,都是ans++,算是歪打正着了。不过逻辑不对,换一道题可能就错了