先排序,用双指针扫描定义 L 为左指针,R 为右指针,总组数sum=0,每次相加左右指针指向的元素,若大于价格上限则R--,sum++;否则两指针同时往中间移一位即L++,R--;如果L==R,说明只剩下一个数了,总组数sum++,如果L>R,就结束了。代码: #include<bits/stdc++.h> using namespace std; int main() { int w,n,sum=0; cin>>w>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i...