题意:
思路:
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> using namespace std; int a[200]; int dp1[1000+10]; int dp2[1000+10]; int main() { int t,n; int i,j,k; int ans; int cas=1; scanf("%d",&t); while(t--) { ans=1e7; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&a[i]); if(ans>abs(a[i])) ans=abs(a[i]); } for(i=0;i<n;i++) { dp1[i]=abs(a[i]); dp2[i]=a[i]; for(j=i+1;j<n;j++) { dp2[j]=dp2[j-1]+a[j]; dp1[j]=min(abs(dp2[j-1]+a[j]),abs(a[j])); if(dp1[j]<ans) ans=dp1[j]; } } printf("Case %d: %d ",cas++,ans); } return 0; }