最大K乘积问题
2015-11-22 14:28
260 查看
#include "iostream" #include "string" #include "fstream" #include "algorithm" using namespace std; /* I(s,t)表示从s位开始的t位数字组成的十进制数 f(i,j)表示I(0,i)的最大j乘积 f(i,j) = max{ f(b,j-1) * I(b,i-b) } 1<=b<i */ const int MAX = 9; int f[MAX][MAX]; string num; int I(int i, int j) { string str = num.substr(i, i+j); //截取 return atoi(string(str).c_str()); //转为数字 } //返回n位十进制整数num的最大k乘积 int dyna(int n, int k) { int i, j, b, temp; int len = num.length(); for(i=1; i<=len; i++) f[i][1] = I(0, i); for(i=2; i<=len; i++) for(j=2; j<=k; j++) { f[i][j] = f[1][j-1] * I(1, i-1); for(b=2; b<i; b++) { temp = f[b][j-1] * I(b, i-b); if(temp > f[i][j]) f[i][j] = temp; } } return f[len][k]; } int main() { ifstream fin("k.txt"); int n, k; cout << "输入十进制位数n=:"; fin >> n; cout << n; cout << "\n输入划分的段数k=:"; fin >> k; cout << k; cout << "\n输入十进制整数num=:"; fin >> num; cout << num << endl; cout << num << "的最大" << k << "乘积为:" << dyna(n, k) << endl; fin.close(); return 0; }
相关文章推荐
- secureCRT用串口连接Mini2440方法
- 通过Matrix进行二维图形仿射变换
- 【BZOJ】2956: 模积和
- LTE中的CQI RI PMI参数
- 推荐系统(二) —— 利用用户行为数据 —— 基于领域的算法
- EF异常:“System.InvalidOperationException”类型的未经处理的异常在 mscorlib.dll 中发生
- 【BZOJ】2938: [Poi2000]病毒
- linux 创建新用户添加到sudo用户组及基本安装操作等
- open和fopen的区别
- MySQL 表操作
- 寻找最优参数解:最速下降法,牛顿下降法,阻尼牛顿法,拟牛顿法DFP/BFGS
- storyboard(故事版)新手教程 图文详解 3.在故事版上使用scrollview
- Linux命令--scp的使用详解
- FireFly开发之路(四)FireFly配置环境
- jstorm
- 信息安全系统设计基础第十一周学习总结
- 【BZOJ】2924: [Poi1998]Flat broken lines
- 1092. To Buy or Not to Buy (20)
- PHP输出当前进程所有变量
- 1092. To Buy or Not to Buy (20)