HDU 4223 Dynamic Programming?(dp)

题意:

思路:

 

#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\n",cas++,ans);

    }

    return 0;

}

 

你可能感兴趣的:(HDU 4223 Dynamic Programming?(dp))