在一串数字中插入r个乘号,使得乘积最大
来源:互联网 发布:源码交易zhideyao 编辑:程序博客网 时间:2024/06/05 17:17
如 在847313926插入5个乘号,乘积最大为8*4*731* 3*9* 92*6
一般思路dp:
#include <iostream>#include <cstdio>#include <string>#include <cstring>using namespace std;int n;void show(long long c[][20],int r){ for(int i=1;i<=n;i++) { for(int j=0;j<=r;j++) { printf("%12I64d",c[i][j]); } cout<<endl; }}int main(){ char ch[20]; int a[20]; int i,j,k; int r;//插入乘号个数 long long f[20][20]; long long d; while(1) { scanf("%s",ch); scanf("%d",&r); memset(f,0,sizeof(f)); n=strlen(ch); if(n<=r) { cout<<"error"<<endl; continue; } for(i=0;i<n;i++) { a[i+1]=(ch[i]-'0'); } for(d=0,i=1;i<=n;i++) { d=d*10+a[i]; f[i][0]=d; } show(f,r); int u; for(k=1;k<=r;k++)//乘号个数,即列数,从1开始 for(i=k+1;i<=n;i++)//行数,从第二行开始 { for(j=k;j<i;j++)//模拟新增的一个乘号所在位置j,范围[k,i) { for(d=0,u=j+1;u<=i;u++) d=d*10+a[u]; if(f[i][k]<f[j][k-1]*d) f[i][k]=f[j][k-1]*d; } } show(f,r); } return 0;}
- 在一串数字中插入r个乘号,使得乘积最大
- 请在123456789中插入3个乘号使得乘积最大
- 123456789 往这串数字里插入3个乘号,使得结果最大
- 插入r个乘号问题的动态规划求解
- uva10905连接n个数字,使得连成的数字最大
- 在一串字符中匹配出4个连续的数字
- 在数组中找到至少包含一个数字的子阵具有最大的乘积
- 连续数字最大乘积
- 正整数分解使得乘积最大问题
- 输入一串数字输出最大的数字
- 给你一串股票价格,找出买点和卖点,使得利润最大。
- 给你一串股票价格,找出买点和卖点,使得利润最大
- 机试-求一串数字中,最大与最小的数字的和
- 对于1个正整数N,将其拆分成几个正整数的和,如何拆分可使得其乘积最大?
- 插入乘号问题
- Java从键盘中读取一串数字存入数组,并返回元素组成的最大数
- 使用if--else 在4个数字中找到最大数字
- 输入一串数字,将其中最小的与第一个调换,最大的与第二个调换,然后输出
- C# 3.0特性-- 对象初始化器
- (汉字问题2)PrepareStatement 中文参数问题
- 继hibernate后又一ORM框架commons-dbutils的JDBC第一次使用日记
- java_sca
- Hyper-V 支持三种网络类型: 外部,内部,专用
- 在一串数字中插入r个乘号,使得乘积最大
- 【四招快速关闭电脑程序】
- smarty模板引擎
- hdu 1728 逃离迷宫(DFS)
- ZOJ Problem Set - 1029 Moving Tables
- Android ADB 命令
- 进程与线程的一个简单解释
- 内存泄露
- access violation