zjnu 1186 乘积最大(区间DP)
来源:互联网 发布:tp路由器mac地址修改器 编辑:程序博客网 时间:2024/06/05 14:46
题目链接:
http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1186
思路:
区间DP。dp[i][j]表示前i个数字里面有j个乘号的时候的最大值。
那么就有dp[i][j]=max(dp[k][j-1]*x),这里1<=k<j,x表示从k~j组成的数。
代码:
#include<stdio.h>#include<string.h>#define ll __int64ll max(ll a,ll b){ return a>b?a:b;}int main(){ ll n,i,j,k,K,l,dp[55][10],x,w; char s[45]; while(scanf("%I64d%I64d",&n,&K)!=EOF) { x=0; ll maxi=0; scanf("%s",s); l=strlen(s); for(i=0;i<l;i++) s[i]=s[i]-'0'; for(i=0;i<55;i++) for(j=0;j<10;j++) dp[i][j]=1; dp[1][0]=s[0]; for(i=2;i<=l;i++) { for(j=0;j<i&&j<=K;j++) { for(k=1;k<i;k++) { x=0; if(j==0) //如果没有乘号就是他本身。 { for(w=0;w<i;w++) x=x*10+s[w]; dp[i][0]=x; } else { for(w=k;w<i;w++) x=x*10+s[w]; if(k>j-1) dp[i][j]=max(dp[i][j],dp[k][j-1]*x); } } } //maxi=max(maxi,dp[i][j]); } printf("%I64d\n",dp[n][K]); } return 0;}
0 0
- zjnu 1186 乘积最大(区间DP)
- [区间DP]乘积最大
- hrbustoj1212 乘积最大 区间DP
- 乘积最大---区间型dp
- zjnu 1275 最大的算式(Bigexp)(区间DP)
- 区间DP——整数划分(使乘积最大)
- NOJ 1017 乘积最大 (经典的区间dp)
- Vijos P1347 乘积最大(动态规划,区间DP)
- luogu1018【2000提高】乘积最大(区间dp)
- nefuoj1204-区间dp&前缀处理-分段乘积最大
- zjnu 1181 石子合并(区间DP)
- zjnu 1182 能量项链(区间DP)
- 乘积最大(DP)
- codevs1017 乘积最大(dp)
- 乘积最大<DP><C++>
- OpenJudge_P8782 乘积最大(DP)
- NOIP 乘积最大(dp)
- dp专题:乘积最大
- 编译opencv该注意的问题
- 带方向性全排列
- Block - 3
- 从头学Qt Quick(1) --体验快速构建动态效果界面
- 关于更新sdk用的代理设置,以及hosts配置的了解
- zjnu 1186 乘积最大(区间DP)
- JetBrains个人版限时7折,错过不再
- Chapter5-标准I/O库(下)-「APUE读书笔记」
- 刚把ios 环境做好 截个图庆祝一下
- Mybatis 中在传参时,$ 和# 的区别
- CentOS 7/RHEL 7 网卡启动错误
- NOI2008 志愿者招募
- Android之开发者应该收藏的优秀博客和技术网站
- 队列---基本概念、顺序队列