?? 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 + -