区间dp—整数划分
2017-08-20 18:23
134 查看
题目地址
http://acm.nyist.net/JudgeOnline/problem.php?pid=746
先输入一个整数n,再输入一个数字m,将n分成m - 1 组,使得这m-1组的乘积最大。
代码如下
#include<algorithm>
#include<string.h>
#include<string>
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll func(string s,int l,int r)
{
ll k,ans;
k = 1;
ans = 0;
for(int i = r;i >= l;i --)
{
ans = ans + (s[i] - '0') * k;
k *= 10;
}
return ans;
}
int main()
{
int t,i,j,k,l,m,flag;
string s;
ll ans,dp[50][50],a[50][50];
scanf("%d",&t);
getchar();
while(t --)
{
cin >> s;
cin >> m;
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
for(i = 0;i < s.size();i ++)
{
for(j = i;j < s.size();j ++)
{
a[i][j] = func(s,i,j);
}
}
for(i = 0;i < s.size();i ++)
{
dp[i][0] = a[0][i];
}
for(l = 1;l < m;l ++)
{
for(i = l - 1;i < s.size();i ++)
{
for(k = 0;k < i;k ++)
{
dp[i][l] = max(dp[i][l],dp[k][l - 1] * a[k + 1][i]);
}
}
}
cout<<dp[s.size() - 1][m - 1]<<endl;
}
return 0;
}
http://acm.nyist.net/JudgeOnline/problem.php?pid=746
先输入一个整数n,再输入一个数字m,将n分成m - 1 组,使得这m-1组的乘积最大。
代码如下
#include<algorithm>
#include<string.h>
#include<string>
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll func(string s,int l,int r)
{
ll k,ans;
k = 1;
ans = 0;
for(int i = r;i >= l;i --)
{
ans = ans + (s[i] - '0') * k;
k *= 10;
}
return ans;
}
int main()
{
int t,i,j,k,l,m,flag;
string s;
ll ans,dp[50][50],a[50][50];
scanf("%d",&t);
getchar();
while(t --)
{
cin >> s;
cin >> m;
memset(a,0,sizeof(a));
memset(dp,0,sizeof(dp));
for(i = 0;i < s.size();i ++)
{
for(j = i;j < s.size();j ++)
{
a[i][j] = func(s,i,j);
}
}
for(i = 0;i < s.size();i ++)
{
dp[i][0] = a[0][i];
}
for(l = 1;l < m;l ++)
{
for(i = l - 1;i < s.size();i ++)
{
for(k = 0;k < i;k ++)
{
dp[i][l] = max(dp[i][l],dp[k][l - 1] * a[k + 1][i]);
}
}
}
cout<<dp[s.size() - 1][m - 1]<<endl;
}
return 0;
}
相关文章推荐
- 蓝桥杯 算法提高 矩阵乘法 【经典区间dp】
- CF 467C - George and Job (简单区间DP)
- Brackets+POJ+区间dp
- CCF CSP 2016年12月第4题 压缩编码(区间DP)
- poj1141(区间dp基础)
- HDU 2476 String painter 动态规划-区间dp
- hdu4283(区间dp)
- 51nod oj 1022 石子归并 V2 【环形区间DP----四边形不等式优化】
- 【基础练习】【区间DP】codevs2102 石子归并2(环形)题解
- ZOJ 1679 Telescope(区间DP变型题)
- [CDOJ1321]-区间DP(记忆化搜索)
- bzoj1296 [SCOI2009]粉刷匠 区间dp+背包
- 区间dp 小小结
- 玲珑杯 1074 - Pick Up Coins (选硬币 || 区间DP)
- POJ 1179 Polygon(区间DP)
- 【DP_区间DP专辑】
- 【Codeforces Round 331 (Div 2)D】【DP 记忆化搜索 期望DP区间性质 好题】Wilbur and Trees 砍树随机从右从左概率左倒右倒的期望底面覆盖长度
- NYOJ 15 括号匹配(二)区间dp
- 【总括】区间DP
- Zuma HDU - 6212 (区间dp)