Problem: http://acm.hdu.edu.cn/showproblem.php?pid=4223
求连续子序列和的绝对值的最小值
sum[i]储存前 i 个数的和
sum[y]-sum[x]表示第x+1个数到第y个数的和
该题要求的就是最小的abs(sum[y]-sum[x])
#include<cstdio> #include<algorithm> using namespace std; #define MAXN 1001 int t,n,a,sum[MAXN]; int main() { scanf("%d",&t); for(int k=1;k<=t;k++){ scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&a); sum[i]=sum[i-1]+a; } sort(sum,sum+n+1); a=sum[1]-sum[0]; for(int i=1;i<n;i++)a=min(a,sum[i+1]-sum[i]); printf("Case %d: %d ",k,a); } return 0; }
程序没什么好解释的.....都懂
DP该如何运用啊..我是弱渣,不懂