本题题目是 DP? 但显然解决方案不是DP...对于这一类求一区间合的题目...可以先将每个sum(1~k) 算出来...通过两个sum之差得到某一区间的值..想到这一步..本题思路就出来了..计算出所有的sum(1~k) < 1<=k<=n >..对sum排序..查找sum[i]-sum[i-1]最小的...但这里要留意..对于sum..应该要有n+1个..也就是要增加一个sum[n+1]=0...
Program:
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
int T,t,a[1005],n,i,ans;
int main()
{
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&T);
for (t=1;t<=T;t++)
{
scanf("%d",&n);
for (i=1;i<=n;i++) scanf("%d",&a[i]);
for (i=2;i<=n;i++) a[i]+=a[i-1];
a[++n]=0;
sort(a+1,a+1+n);
ans=200000;
for (i=2;i<=n;i++)
if (ans>a[i]-a[i-1]) ans=a[i]-a[i-1];
printf("Case %d: %d\n",t,ans);
}
return 0;
}