您的位置:首页 > 其它

数字游戏

2016-05-05 23:41 337 查看
http://114.215.99.34/#

//1016

#include<iostream>

#include<cstring>

using namespace std;

int n,m,Max,Min,s[55],d[55][10],dp[55][10];

void DP(int a[])

{

    int i,j,k;

    for(i=1;i<=n;i++)

        s[i]=s[i-1]+a[i];

    for(i=0;i<=n;i++)

        for(j=0;j<=m;j++)

        {

            d[i][j]=0;

            dp[i][j]=-1u>>1;

        }    

    d[0][0]=dp[0][0]=1;

    for(i=1;i<=n;i++)

        d[i][1]=dp[i][1]=(s[i]%10+10)%10;

    for(j=2;j<=m;j++)

        for(i=j;i<=n;i++)

            for(k=j-1;k<i;k++)

            {

                d[i][j]=max(d[i][j],d[k][j-1]*(((s[i]-s[k])%10+10)%10));

                dp[i][j]=min(dp[i][j],dp[k][j-1]*(((s[i]-s[k])%10+10)%10));

            }

    Max=max(Max,d
[m]);

    Min=min(Min,dp
[m]);

}

int main()

{

    

    while(cin>>n>>m)

    {

        int i,j,a[110];

        Max=0;

        Min=-1u>>1;

        for(i=1;i<=n;i++)

        {

            cin>>a[i];

            a[n+i]=a[i];

        }

        for(j=0;j<n;j++)

            DP(a+j);

        cout<<Min<<endl<<Max<<endl;

    }    

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: