📄 getresult.cpp
字号:
// getresult.cpp : implementation file
//
#include "stdafx.h"
#include "kchengji.h"
#include "getresult.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// getresult
IMPLEMENT_DYNCREATE(getresult, CCmdTarget)
getresult::getresult()
{
/* recTab = new double*[num];
for(int m=0;m<num;m++)
recTab[m] = new double[cutNum];
*/
for(int i=0;i<100;i++)
{
for(int j=0;j<100;j++)
{
recTab[i][j] = -1;
}
}
}
getresult::~getresult()
{
/* for(int p=0;p<num;p++)
{
delete[] recTab[p];
}
delete[] recTab;
recTab = 0; */
}
BEGIN_MESSAGE_MAP(getresult, CCmdTarget)
//{{AFX_MSG_MAP(getresult)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// getresult message handlers
void getresult::set(int mtarget, int mnum, int mcutNum)
{
target=mtarget; num=mnum;cutNum=mcutNum;
}
double getresult::traceback(double target, int num, int cutNum)
{
if(cutNum == 1){
return target;//若被分割的段数为1,就直接返回
}
if(recTab[num-1][cutNum-1] != -1){
return recTab[num-1][cutNum-1];//若表中记录不为-1,就返回该值
}
double processResult = 0;
for(int i=1;i<=num-cutNum+1;i++){
int temp = pow(10,num-i);//次方函数
int firstInt = (int)(target/temp);//取出左边的整数
int restTarget = fmod(target,temp);//取出余下的整数
//对余下的数进行k-1段的划分
int restMultiply = traceback(restTarget,num-i,cutNum-1);
int oneResult = firstInt*restMultiply;
if(oneResult > processResult){
processResult = oneResult;//当前所得最大结果
}
}
recTab[num-1][cutNum-1] = processResult;//将k乘积写入备忘录
return processResult;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -