hdu 4223 dp 求连续子序列的和的绝对值最小值
从后往前
#include <stdio.h> int abs(int s) { if(s<0) return -s; return s; } int main() { int t,n,i,j,a[1010],sum,min,k=1; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); min=abs(a[1]); //printf("%d\n",min); for(i=2;i<=n;i++)//双层循环枚举所有连续和,求得最小绝对值 { sum=0; for(j=i;j>=1;j--) { sum+=a[j]; if(min>abs(sum)) min=abs(sum); } // printf("%d %d\n",sum,abs(sum)); } printf("Case %d: %d\n",k++,min); } return 0; }