1 条题解
-
0
C++ :
#include <iostream> #include <algorithm> #include <string> #include <sstream> using namespace std; long long f[47][7]; int main() { long long n, m; long long i, j, k, cache; string s; istringstream ss; cin >> n >> m >> s; f[1][0] = s[0] - '0'; for (i = 2; i <= n; i++) { ss.str(s.substr(0, i)); ss >> f[i][0]; ss.clear(); for (j = 1; j < i; j++) { ss.str(s.substr(j, i - j)); ss >> cache; ss.clear(); for (k = 1; k < i && k <= m; k++) f[i][k] = max(f[i][k], f[j][k - 1] * cache); } } cout << f[n][m] << endl; return 0; }
Pascal :
var n,m,i,j,k,p:longint; d:array[1..50,1..10] of int64; s:string; function make(p,q:longint):longint; var x:longint; begin val(copy(s,p,q),x); make:=x; end; begin readln(n,m); readln(s); fillchar(d,sizeof(d),0); for i:=1 to n do d[i,1]:=make(1,i); for k:=2 to m+1 do for i:=k to n do for j:=i downto k do begin p:=make(j,i-j+1); if d[i,k]<d[j-1,k-1]*p then d[i,k]:=d[j-1,k-1]*p; end; writeln(d[n,m+1]); end.
- 1
信息
- ID
- 823
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者