codevs 1017 乘积最大 dfs

来源:互联网 发布:js中alert输出变量 编辑:程序博客网 时间:2024/05/29 07:47

题目:
http://codevs.cn/problem/1017/

#include<iostream>#include<cstdio>#include<algorithm>using namespace std;typedef unsigned long long ll;const ll MAXN=1001;ll a[MAXN][MAXN];ll n,k,ans;char s[MAXN];void dfs(ll tot,ll l,ll c){    if(c==k+1) { ans=max(ans,tot);return;}    if(!c) {for(ll i=1;i<=n;i++) dfs(tot*a[1][i],i+1,c+1);}    else {for(ll i=l;i<=n;i++) dfs(tot*a[l][i],i+1,c+1);}    return;}void solve(){    scanf("%lld%lld%s",&n,&k,s+1);    for(ll i=1;i<=n;i++) a[i][i]=s[i]-'0';    for(ll i=1;i<=n;i++)        for(ll j=i+1;j<=n;j++)            a[i][j]=a[i][j-1]*10+a[j][j];    dfs(1,1,0);    cout<<ans;    return;}int main(){    solve();    return 0;}
原创粉丝点击