NC16757. [NOIP2000]乘积最大
描述
输入描述
第一行共有2个自然数N,K(6 ≤ N ≤ 40,1 ≤ K ≤ 6)
第二行是一个长度为N的数字串。
输出描述
输出所求得的最大乘积(一个自然数)。
示例1
输入:
4 2 1231
输出:
62
Python3(3.5.2) 解法, 执行用时: 45ms, 内存消耗: 3576K, 提交时间: 2019-08-12 20:50:37
n,maxk=map(int,input().split()) f=[[0 for i in range(maxk+1)] for j in range(n+1)] s=int('1'+input()) for i in range(1,n+1): f[i][0]=int(str(s)[1:i+1]) for k in range(1,maxk+1): for i in range(k+1,n+1): for j in range(k,i): f[i][k]=max(f[i][k],f[j][k-1]*int(str(s)[j+1:i+1])) print(f[n][k])
Python(2.7.3) 解法, 执行用时: 24ms, 内存消耗: 3056K, 提交时间: 2019-02-23 20:45:50
n,k=map(int,raw_input().split()) k=k+1 st="#"+raw_input() f=[[0 for i in range(k+2)] for i in range(n+2)] f[1][0]=1 for i in range(1,n+1): x=0 for j in range(i+1,n+2): x=x*10+(int(st[j-1])) for w in range(0,k): f[j][w+1]=max(f[j][w+1],f[i][w]*x) print f[n+1][k]