• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签:

资源简介

C++实现从input.txt读取k值n值以及数据,计算最大k乘积,并将结果写入文件output.txt,压缩包包含文件readme.txt对代码做了简要介绍,将文件路径修改便可运行,如果想对算法深入了解可查看我的博客:http://blog.csdn.net/u014524107/article/details/45770295

资源截图

代码片段和文件信息

/*************************************************************************
> File Name: Kproduct.cpp
> Author: wuchenyang
> Created Time: 2015年05月10日 星期六 19时14分18秒

算法思路:

采用动态规划法求解:
n为数字长度,k为划分个数;
p[i][k] 表示0~i 所表示数字的十进制数 最大k乘积, c[k+1][i]表示数字 n-i+1~i 所表示的十进制数
1.若k值为1则0~n所表示的十进制数为最大;
2.若k>0 && k
 ************************************************************************/

#include
#include
#include
#include
#include
using namespace std;

class product
{ int n;
int k;
int c[10][10];
int p[10][5];
int num[10];
string data;
int pmax;

public :
void readfile();
void init_Arryc();
void charToInt();
void productArry();
void writeTofile();
};

/*写入文件*/
void product::writeTofile()
{
ofstream outf(“/home/xiaoquan/suanfa/output.txt“);
if(!outf.is_open())
{
cout<<“open the file failed!“< }
outf< outf.close();
}

/*最大k乘积*/
void product::productArry()
{
p[n][k];

if(n<0|k>n-1|k<0)    /*k 或者 n 的值不合法*/
{
cout<<“k value or n value is not right!“< }
if(k == 1)      /*k值为1*/
{
cout<<“最大k乘积为:“< }
else 
{
for(int i = 1; i< n+1; i++) /*k值为1*/
{
p[i][1] = c[1][i];
}
for(int i = 1; i<= n;i++)
{
for(int j = 2; j<=k ;j++)
{


int max = 0;
for(int k = 1;k {
i int temp = p[k][j-1] * c[k+1][i];

if(temp > max)
{
max = temp;
}
}
p[i][j] = max;
}
}

pmax = p[n][k];
cout<<“数组p:“< for(int i = 1; i<= n;i++)
{
for(int j = 1;j<= n;j++)
{
cout<
}
cout< }
cout<<“最大k乘积为:“< }
}

/*初始化数组*/
void product::init_Arryc()
{
 c[n][n];
cout<<“c:“< for(int i = 1; i <= n; i++)
{
c[i][i] = num[i];
for(int j = i+1; j <= n; j++)
{
c[i][j] = c[i][j-1]*10 + num[j];
// cout< }
cout<
}
for(int i = 1; i<=n; i++)
{
for(int j = 1; j<=n; j++)
{
cout< }
cout< }
}

/*将字符数组转化为整型数组*/
void product::charToInt()
{
num[n] = 0;
cout<<“data:“< cout<<“num:“< for(int i = 0 ;i < n;i++)
{
num[i+1] = data[i] - ‘0‘;
cout< }
}

/*读取文件*/
void product::readfile()
{
char line1[20];
char line2[20];

string x1x2;
// int nk;

ifstream inf(“/home/xiaoquan/suanfa/input.txt“);
if(!inf.is_open())
{
cout<<“open file error!“< }

inf.getline(line1sizeof(line1));
inf.getline(line2sizeof(line2));
// cout< stringstream word(line1);//提取空格读取文件第一行
word>>x1;
word>>x2;

n = atoi(x1.c_str());   //将字符串类型转化为整型
k = atoi(x2.c_str());

data = line2;
// cout<<“n= “<// cout<<“x1=“<

}

int main()
{
product pc ;
pc.readfile();
    pc.charToInt();
pc.init_Arryc();
pc.productArry();
pc.writeTofile();
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3200  2015-05-12 17:57  最大k乘积\Kproduct.cpp
     文件         304  2015-05-16 09:22  最大k乘积\readme.txt
     目录           0  2015-05-16 09:07  最大k乘积\

评论

共有 条评论

相关资源