阶梯型递进模型算法的实现



这是我要搭建的模型。

大体说下:

就是需要建立6级阶梯模型,每一级都分成两个阶段。比如开始的principal是2400,然后进入第一级随机增减,一共的12个阶段分别是

1 3 2 6 4 12 8 24 16 48 32 96

什么意思呢,1 3 对应1-1;1-2 。2 6 对应2-1   2-2、以此类推

1,首先看第一级,1 3  即把principal分成4份,1-1 占1份,1-2占3份。第二级以此类推。

2,当第一级中的1-1份数随机减掉了后,就开始进入1-2  。

3.  在1-2中将1-1的份额提升回来后,重新进入1-1 。如果1-2 的份额也消耗完,就结束了。

4,当1-1积累了原来的初始的3倍后,进入第二级中的2-1 。。后面运行流程同第一级。不同的是:

1)进入第二级时的principal不再是第一级中1-1的3倍。而是1-1的2倍。剩下的部分储存起来。压入堆栈中。

2)当2-2中的份额消耗结束后,第二级结束,同时流程回退到第一级,这时将堆栈中的储存量pop出来作为第一级的principal。

5,后面第二级积累到2级初始值的3倍后,进入第三级,同样操作堆栈储存。第4级,5级以此类推。。。

6,知道第六级中积累到规定量后,流程结束。

下面是我用c++实现的过程:

// level.cpp : 定义控制台应用程序的入口点。
//


#include "stdafx.h"
#include <iostream>
#include <stack>
#include <math.h>
using namespace std;
int Betting( int cur,int plan[][2],int i,int j,int principal,int times)
{
//for (;i<6;i++)
//{
// j=0;
// for (;j<2;j++)
// {
// cout<<plan[i][j]<<"\t";
// }
// cout<<"\n";
//}
//.....
cout<<"<Betting> plan: "<<plan[i][j]<<"  i: "<<i<<"  j: "<<j<<endl;
//int min_num=plan[i][j]*principal/10;
//int rand_num=rand()%(2*min_num)-min_num;
//cout<<"<Betting> rand_num: "<<rand_num<<endl;
//cur=cur+rand_num;
if (times<=4)
cur=cur*3;
else
cur=cur+10000;
//cout<<"<Betting> cur: "<<cur<<endl;
return cur;




}


int main(int argc, _TCHAR* argv[])
{
int principal=2400;
int income=principal;
int i=0,j=0;
stack <int> storage;
int total[6]={0};
int level=1;
/*
*根据初始值及级别设置存储值
*e.g.
*principal=3,total[]={0 3 9 21 45 93};
*/
for (int index=1;index<6;index++)
{
total[index]=total[index-1]+principal*level;
level=level*2;
}
/*for (int index=0;index<6;index++)
{
cout<<total[index]<<"\t";
}*/
storage.push(total[i]);
//int plan[6][2]={1,2,2,4,4,8,8,16,16,32,20,40};
int plan[6][2]={1,3,2,6,4,12,8,24,16,48,32,96};
int cur=income;
for (int times=0;times<15;times++)
{
//cout<<"<main> cur:"<<cur<<endl;
cur=Betting(cur,plan,i,j,principal,times);
//cout<<"<main> cur:"<<cur<<endl;
if (cur>= principal*pow((double) 2,i+1)*3/2&&i<=4)
{
j=0;
i++;
//if (i>=5)
//{
// break;
//}
cur=cur-total[i]+storage.top();
storage.push(total[i]);


}else if(0>=cur)
{
j=0;
i--;
if (i<0)
{
break;
}
cur=storage.top();
storage.pop();
cur=cur-storage.top();


}else if(cur<=principal*pow((double) 2,i+1)/3)
{
//cout<<"<main> cur:"<<cur<<"  "<<((int) pow((double) 2,i+1))<<endl;
j=1;
}
cout<<"<main> cur:"<<cur<<endl;
}
income=cur+storage.top();
cout<<"income: "<<income<<endl;
cout<<"storage:"<<endl;
while(storage.size()>0)
{
cout<<storage.top()<<endl;
storage.pop();
}

return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值