动归. 注: 我发现ural的时间限制很宽裕但空间限制很BT...所以总是有Crash的现象... #include<iostream> using namespace std; int W[30],n,tot,temp; bool T[5000001]; int main() { int i,j,k; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&W[i]); tot+=W[i]; } temp=tot/2; memset(T,false,sizeof(T)); T[0]=true; for(i=1;i<=n;i++) { for(j=tot;j>=W[i];j--) { if(T[j-W[i]]) T[j]=true; } } for(i=temp;i>=0;i--) { if(T[i]) break; } printf("%d/n",tot-2*i); return 0; }