楼主: fantuanxiaot
25766 238

[其他] [原创]基于Matlab和C++的MBS(抵押支持债券)蒙特卡罗模拟定价   [推广有奖]

已卖:1597份资源

大师

9%

还不是VIP/贵宾

-

威望
7
论坛币
-234454 个
通用积分
225.8477
学术水平
3783 点
热心指数
3819 点
信用等级
3454 点
经验
150360 点
帖子
7597
精华
32
在线时间
1329 小时
注册时间
2013-2-4
最后登录
2025-3-23

初级学术勋章 初级热心勋章 中级热心勋章 中级学术勋章 初级信用勋章 中级信用勋章 高级热心勋章 高级学术勋章 特级学术勋章 特级热心勋章 高级信用勋章 特级信用勋章

楼主
fantuanxiaot 发表于 2015-5-4 22:29:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
按揭抵押债券(Mortgage Backed Securities,MBS),又名抵押支持债券,是一种便于按揭债权交易的标准化债券,是最早的资产证券化商品,由美国吉利美(Ginnie Mae)于1970年首创。美国的住房专业银行及储蓄机构将贷出的住房抵押贷款中符合一定条件的贷款集中起来,形成一个抵押贷款的集合体(pool),利用贷款集合体定期发生的本金及利息的现金流入来发行证券,并由政府机构或政府背景的金融机构对该证券进行担保,以便贷款机构能够及时套现,从30年或更长贷款期限中解脱出来。抵押集合体所产生的本金、利息以及债务风险原封不动地转移支付给MBS的投资者。因此,MBS也被称为过手证券(pass-through securities)。
美国的过手抵押证券主要有吉利美(美国政府国民抵押贷款协会)担保的过手证券、房地美(美国联邦住宅贷款抵押公司FHLMC)的参政书、房利美(美国联邦国民抵押协会FNMA)的抵押支持债券,以及民间性质的抵押过手债券等。

Matlab代码如下:

本帖隐藏的内容

  1. function MBS_MC_Pricing(MC_Times)
  2. %%  MBS_Value,MBS_VAR分别为MBS的价值和方差
  3. %%  基于Matlab的MBS蒙特卡罗模拟定价
  4. %%  MBS具有路径依赖性
  5. %%  举例说明
  6. %%  by fantuanxiaot
  7. %%  基础参数的设定
  8. %  基本假设:平均加权时间假设10年
  9. WAM=10;
  10. %  二叉树的规模
  11. N=WAM+1;
  12. %  蒙特卡罗模拟的次数
  13. %  MC_Times=1000;
  14. %  本金
  15. Principal=1e5;
  16. %  期权调整价差
  17. OAS=0.02;
  18. %  初始的一年期即期利率(Spot Rate)
  19. %  初始的再融资利率(Refinancing Rate)
  20. %  利息支付利率或者转付率
  21. %  加权平均票面利率
  22. rand('seed',100);
  23. InitialSpotRate=0.06;
  24. InitialRefinancingRate=0.08;
  25. PT_Rate=0.075;
  26. WAC_Rate=0.08;
  27. %%  首先构建利率的二叉树
  28. %%  liv二叉树模型基于RendleMan和Bartter模型
  29. u=1.05;
  30. d=1/u;
  31. SpotRate=zeros(N);
  32. DiscountRate=zeros(N);
  33. for i=1:N
  34.     for j=1:i
  35.         SpotRate(j,i)=InitialSpotRate*u^(i-j)*d^(j-1);
  36.         DiscountRate(j,i)=SpotRate(j,i)+OAS;
  37.     end
  38. end
  39. %  参数:MBS平均价值和标准差
  40. MBS_Vector=zeros(MC_Times,1);
  41. MBS_Value=0;
  42. MBS_STD=0;
  43. %  二叉树路径起始点
  44. BinTree_Index=1;
  45. %  计算的贴现率
  46. DiscountRate_Vector=[];
  47. %%  蒙特卡罗计算MBS
  48. for i=1:MC_Times
  49.     %  剩余的本金
  50.     Residual_Principal=Principal;
  51.     %  再融资利率
  52.     RefinancingRate=InitialRefinancingRate;
  53.     %  计算的贴现率  
  54.     DiscountRate_Vector=[];
  55.     %  二叉树路径起始点
  56.     BinTree_Index=1;
  57.     %  计划偿还本金
  58.     SchedualPrincipal=0;
  59.     %  预计提前偿还本金
  60.     ExpectedPrePrincipal=0;
  61.     %  现金流
  62.     CashFlow=zeros(WAM,1);
  63.     for j=1:WAM
  64.         Residual_Principal=Residual_Principal-(SchedualPrincipal+ExpectedPrePrincipal);
  65.         %  利率的随机模拟路径
  66.         if j==1
  67.             DiscountRate_Vector=[DiscountRate_Vector DiscountRate(1,1)];
  68.             if randn>0
  69.                 RefinancingRate=RefinancingRate*u;
  70.             else
  71.                 RefinancingRate=RefinancingRate*d;
  72.             end
  73.         elseif j>1
  74.             if randn>0
  75.                 BinTree_Index=BinTree_Index-1;
  76.                 if BinTree_Index<1
  77.                     BinTree_Index=1;
  78.                 end
  79.                 RefinancingRate=RefinancingRate*u;
  80.                 DiscountRate_Vector=[DiscountRate_Vector DiscountRate(BinTree_Index,j)];
  81.             else
  82.                 BinTree_Index=BinTree_Index+1;
  83.                 if BinTree_Index>j
  84.                     BinTree_Index=j;
  85.                 end
  86.                 RefinancingRate=RefinancingRate*d;
  87.                 DiscountRate_Vector=[DiscountRate_Vector DiscountRate(BinTree_Index,j)];
  88.             end
  89.         end
  90.         %  利息支付
  91.         Interest=PT_Rate*Residual_Principal;
  92.         %  计算月末或年末的贷款偿还余额
  93.         Payment=CaCuPayment(Residual_Principal,WAM-j+1,WAC_Rate);
  94.         %  计算偿还本金
  95.         SchedualPrincipal=Payment-Residual_Principal*WAC_Rate;
  96.         if Residual_Principal>SchedualPrincipal
  97.             CPR_Rate=CaCuCPR(WAC_Rate,RefinancingRate);
  98.             ExpectedPrePrincipal=CPR_Rate*(Residual_Principal-SchedualPrincipal);
  99.             if j<=N-1
  100.                 CashFlow(j)=Interest+SchedualPrincipal+ExpectedPrePrincipal;
  101.             else
  102.                 CashFlow(j)=Interest+Residual_Principal;
  103.             end
  104.         end
  105.     end
  106.     MBS_Vector(i)=CaCuMBS(CashFlow,DiscountRate_Vector);
  107. end
  108. MBS_Value=mean(MBS_Vector);
  109. MBS_STD=std(MBS_Vector);
  110. disp(['蒙特卡罗模拟次数为:',num2str(MC_Times)])
  111. disp(['MBS的本金为:',num2str(Principal),'元'])
  112. disp(['MBS的价值为:',num2str(MBS_Value),'元'])
  113. disp(['基于蒙特卡罗模拟的MBS价值标准差:',num2str(MBS_STD)])
  114. fprintf('\n')
  115. end
  116. %%  计算MBS价值
  117. function result=CaCuMBS(CashFlow,DiscountRate_Vector)
  118. result=0;
  119. for i=1:length(CashFlow)
  120.     result=result+CashFlow(i)/(1+DiscountRate_Vector(i))^i;
  121. end
  122. end
  123. %%  计算月末或者年末抵押偿还的金额
  124. function result=CaCuPayment(Payment,Time,WAC_Rate)
  125. %  Time是剩余的月份
  126. %  Payment是剩余的抵押贷款偿还的金额
  127. result=WAC_Rate*Payment/(1-1/(1+WAC_Rate)^Time);
  128. end

  129. %%  CPR条件提前偿还率的计算
  130. %%  建立提前还款模型
  131. function CPRresult=CaCuCPR(WAC_Rate,RefinancingRate)
  132. %  CPR由差价来决定
  133. CPR_Minus=WAC_Rate-RefinancingRate;
  134. %  判断条件
  135. if CPR_Minus<=0
  136.     CPRresult=0.05;
  137. elseif CPR_Minus>0 && CPR_Minus<=0.5/100
  138.     CPRresult=0.1;
  139. elseif CPR_Minus>0.5/100 && CPR_Minus<=0.01
  140.     CPRresult=0.2;
  141. elseif CPR_Minus>0.01 && CPR_Minus<=1.25/100
  142.     CPRresult=0.3;
  143. elseif CPR_Minus>1.25/100 && CPR_Minus<=2/100
  144.     CPRresult=0.4;
  145. elseif CPR_Minus>0.02 && CPR_Minus<=2.5/100
  146.     CPRresult=0.5;
  147. elseif CPR_Minus>0.025 && CPR_Minus<=0.3
  148.     CPRresult=0.6;
  149. else
  150.     CPRresult=0.7;
  151. end
  152. end
  153. %%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  154. %%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码


蒙特卡罗模拟效果如下:

MBS_MC_Pricing.jpg


C++的代码如下:


本帖隐藏的内容


首先构建一个MBS类:
”MBS.h“


  1. //  构建MBS的类
  2. //  by fantuanxiaot
  3. #ifndef _MBS_H_
  4. #define _MBS_H_
  5. //  判别Visual C++的版本
  6. #if _MSC_VER>1000
  7. #pragma once
  8. #endif
  9. #include <vector>
  10. #include <Matrix.h>
  11. #include <MatrixIO.h>
  12. #include <cmath>
  13. #include <random>
  14. #include <iostream>
  15. //  MBS的类
  16. using namespace std;
  17. using namespace Numeric_lib;
  18. class MBS
  19. {
  20. private:
  21.         //  期权调整价差
  22.         double OAS;
  23.         //  MBS面值
  24.         double Principal;
  25.         //  加权平均到期时间
  26.         int WAM;
  27.         //  蒙特卡罗模拟的次数
  28.         int MC_Times;
  29.         //  初始的一年期即期收益率
  30.         double InitialSpotRate;
  31.         //  初始的再融资收益率
  32.         double InitialRefinancingRate;
  33.         //  利息支付利率或者转付率
  34.         double PT_Rate;
  35.         //  加权平均票面利率
  36.         double WAC_Rate;
  37. public:
  38.         ~MBS(){}
  39.         MBS(double OAS1,double Principal1,int WAM1,int MC_Times1,double InitialSpotRate1,
  40.                 double InitialRefinancingRate1,double PT_Rate1,double WAC_Rate1)
  41.         {
  42.                 OAS=OAS1;
  43.                 Principal=Principal1;
  44.                 WAM=WAM1;
  45.                 MC_Times=MC_Times1;
  46.                 InitialSpotRate=InitialSpotRate1;
  47.                 InitialRefinancingRate=InitialRefinancingRate1;
  48.                 PT_Rate=PT_Rate1 ;
  49.                 WAC_Rate=WAC_Rate1;
  50.         }
  51.         double CaCuCPR(double WAC_Rate,double RefinancingRate);
  52.         double CaCuPayment(double Payment,int Time,double WAC_Rate);
  53.         double CaCuMBS(vector<double> CashFlow,vector<double> DiscountRate_Vector);
  54.         double MEAN(vector<double>);
  55.         double STD(vector<double>);
  56.         void CaCuMBSPricing();
  57. };
  58. #endif
复制代码
随后写入函数:
"MBSModel.cpp"


  1. #include "MBS.h"
  2. //  内置函数
  3. double MBS::CaCuCPR(double WAC_Rate,double RefinancingRate)
  4. {
  5.         double CPRresult;
  6.         double CPR_Minus=WAC_Rate-RefinancingRate;
  7.         //  判断条件
  8.         if (CPR_Minus<=0.0)
  9.         {CPRresult=0.05;}
  10.         else if (CPR_Minus>0.0 && CPR_Minus<=0.5/100)
  11.         {CPRresult=0.1;}
  12.         else if (CPR_Minus>0.5/100 && CPR_Minus<=0.01)
  13.         {CPRresult=0.2;}
  14.         else if (CPR_Minus>0.01 && CPR_Minus<=1.25/100)
  15.     {CPRresult=0.3;}
  16.         else if (CPR_Minus>1.25/100 && CPR_Minus<=2.0/100)
  17.     {CPRresult=0.4;}
  18.         else if (CPR_Minus>0.02 && CPR_Minus<=2.5/100)
  19.     {CPRresult=0.5;}
  20.         else if (CPR_Minus>0.025 && CPR_Minus<=0.3)
  21.     {CPRresult=0.6;}
  22.         else
  23.     {CPRresult=0.7;}
  24.         return CPRresult;
  25. }
  26. double MBS::CaCuPayment(double Payment,int Time,double WAC_Rate)
  27. {
  28.         return(WAC_Rate*Payment/(1.0-1.0/pow((1+WAC_Rate),Time)));
  29. }
  30. double MBS::CaCuMBS(vector<double> CashFlow,vector<double> DiscountRate_Vector)
  31. {
  32.         double result=0;
  33.         for(int i=0;i<=CashFlow.size()-1;i++)
  34.         {
  35.                 result=result+CashFlow[i]/pow(1+DiscountRate_Vector[i],i+1);
  36.         }
  37.         return result;
  38. }
  39. double MBS::MEAN(vector<double> A)
  40. {
  41.         double sum=0.0;
  42.         for(int i=0;i<=A.size()-1;i++)
  43.         {
  44.                 sum=sum+A[i];
  45.         }
  46.         return(sum/A.size());
  47. }
  48. double MBS::STD(vector<double> A)
  49. {
  50.         double sum=0.0;
  51.         for(int i=0;i<=A.size()-1;i++)
  52.         {
  53.                 sum=sum+pow(A[i]-MEAN(A),2);
  54.         }
  55.         return(sqrt(sum/A.size()));
  56. }
  57. void MBS::CaCuMBSPricing()
  58. {
  59.         double u=1.05;
  60.         double d=1/u;
  61.         //  利率二叉树的规模
  62.         double N=WAM+1;
  63.         //  首先构建利率的二叉树
  64.         Matrix<double,2> SpotRate(N,N);
  65.         Matrix<double,2> DiscountRate(N,N);
  66.         for(int i=0;i<=N-1;i++)
  67.         {
  68.                 for(int j=0;j<=i;j++)
  69.                 {
  70.                         SpotRate[j][i]=InitialSpotRate*pow(u,i-j)*pow(d,j);
  71.                         DiscountRate[j][i]=SpotRate[j][i]+OAS;
  72.                 }
  73.         }
  74.         //  参数:MBS平均价值和标准差
  75.         vector<double> MBS_Vector(MC_Times);
  76.         double MBS_Value=0;
  77.         double MBS_STD=0;
  78.         //  二叉树路径起始点
  79.         int BinTree_Index=0;
  80.         //  计算的贴现率
  81.         vector<double> DiscountRate_Vector(WAM);
  82.         //  计算现金流
  83.         vector<double> CashFlow(WAM);
  84.         //  蒙特卡罗计算MBS
  85.         //  剩余的本金
  86.     double Residual_Principal=Principal;
  87.     //  再融资利率
  88.     double RefinancingRate=InitialRefinancingRate;
  89.     //  计划偿还本金
  90.     double SchedualPrincipal=0.0;
  91.     //  预计提前偿还本金
  92.     double ExpectedPrePrincipal=0.0;
  93.         //  产生随机数
  94.         default_random_engine generator;
  95.         //  产生均匀分布的随机数
  96.         uniform_real_distribution<double> unif_dis(0,1);
  97.         //  利息
  98.         double Interest=0.0;
  99.         //  支付
  100.         double Payment=0.0;
  101.         //  CPR利率
  102.         double CPR_Rate=0.0;
  103.         for(int i=0;i<=MC_Times-1;i++)
  104.         {
  105.                 //  数据的重置
  106.                 Residual_Principal=Principal;
  107.                 SchedualPrincipal=0.0;
  108.                 ExpectedPrePrincipal=0.0;
  109.                 for(int m=0;m<=WAM-1;m++)
  110.                 {
  111.                         CashFlow[m]=0.0;
  112.                         DiscountRate_Vector[m]=0.0;
  113.                 }
  114.                 RefinancingRate=InitialRefinancingRate;
  115.                 BinTree_Index=0;
  116.                 for(int j=0;j<=WAM-1;j++)
  117.                 {
  118.                         Residual_Principal=Residual_Principal-(SchedualPrincipal+ExpectedPrePrincipal);
  119.                         //  利率的随机模拟
  120.                         if(j==0)
  121.                         {
  122.                                 DiscountRate_Vector[j]=(DiscountRate[0][0]);
  123.                                 if (unif_dis(generator)>=0.5)
  124.                                 {
  125.                                         RefinancingRate=RefinancingRate*u;
  126.                                 } else
  127.                                 {
  128.                                         RefinancingRate=RefinancingRate*d;
  129.                                 }
  130.                         } else if(j>=1)
  131.                         {
  132.                                 if (unif_dis(generator)>=0.5)
  133.                                 {
  134.                                         BinTree_Index--;
  135.                                         if(BinTree_Index<0) BinTree_Index=0;
  136.                                         RefinancingRate=RefinancingRate*u;
  137.                                         DiscountRate_Vector[j]=DiscountRate[BinTree_Index][j];
  138.                                 } else
  139.                                 {
  140.                                         BinTree_Index++;
  141.                                         if(BinTree_Index>j) BinTree_Index=j;
  142.                                         RefinancingRate=RefinancingRate*d;
  143.                                         DiscountRate_Vector[j]=DiscountRate[BinTree_Index][j];
  144.                                 }
  145.                         }
  146.                         //  利息支付
  147.            Interest=PT_Rate*Residual_Principal;
  148.                    //  计算月末或年末的贷款偿还余额
  149.                    Payment=CaCuPayment(Residual_Principal,WAM-j,WAC_Rate);
  150.                    //  计算偿还本金
  151.                    SchedualPrincipal=Payment-Residual_Principal*WAC_Rate;
  152.                    if(Residual_Principal>SchedualPrincipal)
  153.                    {
  154.                            CPR_Rate=CaCuCPR(WAC_Rate,RefinancingRate);
  155.                            ExpectedPrePrincipal=CPR_Rate*(Residual_Principal-SchedualPrincipal);
  156.                            if (j<=WAM-2)
  157.                            {
  158.                                    CashFlow[j]=(Interest+SchedualPrincipal+ExpectedPrePrincipal);
  159.                            } else
  160.                            {
  161.                                    CashFlow[j]=(Interest+Residual_Principal);
  162.                            }
  163.                    }
  164.                 }
  165.                 MBS_Vector[i]=CaCuMBS(CashFlow,DiscountRate_Vector);
  166.         }
  167.         MBS_Value=MEAN(MBS_Vector);
  168.         MBS_STD=STD(MBS_Vector);
  169.         cout<<"蒙特卡罗模拟的次数为"<<MC_Times<<endl;
  170.         cout<<"MBS的本金为:"<<Principal<<"元"<<endl;
  171.         cout<<"MBS的价值为:"<<MBS_Value<<"元"<<endl;
  172.         cout<<"基于蒙特卡罗模拟的MBS价值标准差"<<MBS_STD<<endl;
  173.         cout<<endl;
  174. }
复制代码
最后是调试:
“Main.cpp”


  1. #include "MBS.h"
  2. int main()
  3. {
  4.         int WAM=10;
  5.         //  期权调整价差
  6.         double OAS=0.02;
  7.         //  MBS面值
  8.         double Principal=100000;
  9.         //  蒙特卡罗模拟的次数
  10.         int MC_Times1=10;
  11.         int MC_Times2=100;
  12.         int MC_Times3=1000;
  13.         int MC_Times4=10000;
  14.         //  初始的一年期即期收益率
  15.         double InitialSpotRate=0.06;
  16.         //  初始的再融资收益率
  17.         double InitialRefinancingRate=0.08;
  18.         //  利息支付利率或者转付率
  19.         double PT_Rate=0.075;
  20.         //  加权平均票面利率
  21.         double WAC_Rate=0.08;
  22.         MBS MBS1(OAS,Principal,WAM,MC_Times1,InitialSpotRate,InitialRefinancingRate,PT_Rate,WAC_Rate);
  23.         MBS MBS2(OAS,Principal,WAM,MC_Times2,InitialSpotRate,InitialRefinancingRate,PT_Rate,WAC_Rate);
  24.         MBS MBS3(OAS,Principal,WAM,MC_Times3,InitialSpotRate,InitialRefinancingRate,PT_Rate,WAC_Rate);
  25.         MBS MBS4(OAS,Principal,WAM,MC_Times4,InitialSpotRate,InitialRefinancingRate,PT_Rate,WAC_Rate);
  26.         MBS1.CaCuMBSPricing();
  27.         MBS2.CaCuMBSPricing();
  28.         MBS3.CaCuMBSPricing();
  29.         MBS4.CaCuMBSPricing();
  30.         return 0;
  31. }
复制代码
蒙特卡罗模拟效果如下:


MBS_MC_PricingCpp.jpg


所有源码:


MBS_Model(抵押支持债券).zip (309.96 KB)





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB 蒙特卡罗模拟 matla atlab 蒙特卡罗 蒙特卡罗

回帖推荐

jizhengss 发表于227楼  查看完整内容

有个问题请教一下,MATLAB第120行代码“result=result+CashFlow(i)/(1+DiscountRate_Vector(i))^i;”,这里面楼主是认为折现率就是当期的即期利率吧?但是MBS定价应该是利率路径相关的,应该把路径上所有经过的利率都考虑进去才对吧,也就是说折现率因子不能简单的认为是即期利率的i次方,而是各期利率的乘积,()(1+i1)(1+i2)...(1+in)。

Freddy0110 发表于205楼  查看完整内容

这个好正在搞蒙特卡罗模拟

346807882@qq.co 发表于106楼  查看完整内容

NBA PALYOFFS正激战得如火如荼呢,我们的学习热情也要高涨起来

yiweidon 发表于121楼  查看完整内容

学习一下 !!!

hkmonte 发表于22楼  查看完整内容

谢谢分享!

Crsky7 发表于10楼  查看完整内容

看了一下,编程思路基本差不多

Crsky7 发表于5楼  查看完整内容

很久以前编过,现在全忘了。。
已有 12 人评分经验 威望 论坛币 学术水平 热心指数 信用等级 收起 理由
niuniuyiwan + 60 + 60 + 5 + 5 + 5 精彩帖子
chengzhifu2013 + 60 + 5 + 5 + 5 精彩帖子
chenyi112982 + 5 + 5 + 5 精彩帖子
日新少年 + 5 + 5 + 5 精彩帖子
xujingtang + 100 + 3 对论坛有贡献
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献
admin + 1 精彩帖子
离歌レ笑 + 5 + 5 + 5 精彩帖子
statax + 60 + 3 + 3 对论坛有贡献
jerker + 2 精彩帖子

总评分: 经验 + 440  威望 + 1  论坛币 + 216  学术水平 + 46  热心指数 + 46  信用等级 + 40   查看全部评分

本帖被以下文库推荐

沙发
rrjj101022 发表于 2015-5-4 22:33:32

回帖奖励 +2

谢谢分享~~~
已有 1 人评分经验 论坛币 收起 理由
xddlovejiao1314 + 30 + 3 鼓励积极发帖讨论

总评分: 经验 + 30  论坛币 + 3   查看全部评分

藤椅
xddlovejiao1314 学生认证  发表于 2015-5-4 22:42:02

回帖奖励 +2

支持原创,果断加精。
已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 12 + 1 + 1 + 1 精彩帖子

总评分: 经验 + 12  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

板凳
fantuanxiaot 发表于 2015-5-4 22:42:30
xddlovejiao1314 发表于 2015-5-4 22:42
支持原创,果断加精。
[lol][lol]

报纸
Crsky7 发表于 2015-5-4 22:43:31

回帖奖励 +2

很久以前编过,现在全忘了。。
已有 1 人评分经验 论坛币 收起 理由
xddlovejiao1314 + 30 + 3 鼓励积极发帖讨论

总评分: 经验 + 30  论坛币 + 3   查看全部评分

地板
fantuanxiaot 发表于 2015-5-4 22:46:24
Crsky7 发表于 2015-5-4 22:43
很久以前编过,现在全忘了。。
可以温故而知新
已有 1 人评分经验 论坛币 收起 理由
xddlovejiao1314 + 30 + 3 鼓励积极发帖讨论

总评分: 经验 + 30  论坛币 + 3   查看全部评分

7
hzj010102 发表于 2015-5-4 22:48:54

回帖奖励 +2

已有 1 人评分经验 论坛币 收起 理由
xddlovejiao1314 + 30 + 3 鼓励积极发帖讨论

总评分: 经验 + 30  论坛币 + 3   查看全部评分

8
hzj010102 发表于 2015-5-4 22:49:27

回帖奖励 +2

9
hzj010102 发表于 2015-5-4 22:50:18

回帖奖励 +2

10
Crsky7 发表于 2015-5-4 22:50:34

回帖奖励 +2

fantuanxiaot 发表于 2015-5-4 22:46
可以温故而知新
看了一下,编程思路基本差不多

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 21:41