calculate Fibonacci Num by using Dynamic plan method

/*  
    *filename:   fibonacci.cpp  
    *date:   2006.10.1  
    *created:   karl   zheng  
    *description:   MatrixMultiplication   for   calculate   Fibonacci   No.   n,cost:   logN  
    */  
  #include   <stdafx.h>  
  #include   <stdio.h>  
  #include<iostream>  
  #include   "string.h"  
   
   
  void   MatrixMultiply2By2(int   a[2][2],int   b[2][2],int     c[2][2])  
  {  
   
  //c[1][1]=a[1][1]*b[1][1]+a[1][2]*b[2][1];   //it's   strange:out   bound   but   no   compiler   error   message  
  c[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0];  
  c[0][1]=a[0][0]*b[1][0]+a[0][1]*b[1][1];  
  c[1][0]=a[1][0]*b[0][0]+a[1][1]*b[1][0];  
  c[1][1]=a[1][0]*b[0][1]+a[1][1]*b[1][1];  
  }  
  void   MatrixMultiply2By2_n_times_Power(int   a[2][2],int   n,int     c[2][2])  
  {  
  int   temp[2][2];  
   
  if(1==n)  
  {  
  c[0][0]=a[0][0];  
  c[0][1]=a[0][1];  
  c[1][0]=a[1][0];  
  c[1][1]=a[1][1];  
  return;  
   
  };  
  if(2==n)  
  {  
  MatrixMultiply2By2(a,a,c);  
  return;  
  };  
  if(n%2) //n   is   odd  
  {  
  MatrixMultiply2By2_n_times_Power(a,n/2,temp);  
  MatrixMultiply2By2(temp,temp,c);  
  temp[0][0]=c[0][0];  
  temp[0][1]=c[0][1];  
  temp[1][0]=c[1][0];  
  temp[1][1]=c[1][1];  
  MatrixMultiply2By2(a,temp,c);  
  return;  
  }  
  else //n   is   even  
  {  
   
  MatrixMultiply2By2_n_times_Power(a,n/2,c);  
  temp[0][0]=c[0][0];  
  temp[0][1]=c[0][1];  
  temp[1][0]=c[1][0];  
  temp[1][1]=c[1][1];  
  MatrixMultiply2By2(temp,temp,c);  
  return;  
  }  
   
  }  
   
  int   main(int   argc,char   *argv[])  
  {  
  //char   t[2][3]={'a'};  
  int   a[2][2]={{1,1},{1,0}};  
  int   c[2][2]={{1,1},{1,0}};;  
   
  //MatrixMultiply2By2(a,a,c);  
  int   n,n1;  
  using   namespace   std;  
  while(true){  
   
   
  cin>>n;  
  if(n<0)  
  {  
  cout<<"   input   Negative   No.Error";  
  return   0;  
  };  
  if(0==n)  
  {  
  cout<<"Fibonacci("<<n<<")"<<a[1][1];  
  return   0;  
  };  
  MatrixMultiply2By2_n_times_Power(a,n,c);  
  cout<<"MatrixMultiplication   for   calculate   Fibonacci   No.   n,cost:   logN"<<endl;  
  cout<<"Fibonacci("<<n<<")="<<c[0][1];  
  //getch();  
  }  
   
  return   0;  
  }  

To discretize numeric data using 10-bins method, you can follow these steps: 1. Determine the range of your data: Find the minimum and maximum values of your numeric data. 2. Calculate the bin width: Calculate the difference between the maximum and minimum values, and divide it by the number of bins you want to create. In this case, we want to create 10 bins, so divide the range by 10. 3. Create the bins: Starting from the minimum value, create 10 equal-sized bins by adding the bin width to the previous bin's upper limit. The upper limit of the last bin should be equal to the maximum value. 4. Assign data points to bins: For each data point, find the bin it belongs to by comparing its value to the upper limit of each bin. If the data point is less than or equal to the upper limit of a bin, assign it to that bin. 5. Replace numeric values with bin labels: Once all data points have been assigned to bins, replace their numeric values with a label representing the bin they belong to. For example, if the bins are numbered from 1 to 10, a data point that belongs to the third bin would be labeled as "3". Here's an example: Suppose you have the following numeric data: 2, 5, 7, 10, 11, 13, 15, 18, 21, 25 1. The range of the data is from 2 to 25. 2. The bin width is (25 - 2) / 10 = 2.3 (rounded up to 3). 3. The 10 bins are: Bin 1: 2 - 4 Bin 2: 5 - 7 Bin 3: 8 - 10 Bin 4: 11 - 13 Bin 5: 14 - 16 Bin 6: 17 - 19 Bin 7: 20 - 22 Bin 8: 23 - 25 4. Assign data points to bins: 2 is in Bin 1 5 is in Bin 2 7 is in Bin 2 10 is in Bin 3 11 is in Bin 4 13 is in Bin 4 15 is in Bin 5 18 is in Bin 6 21 is in Bin 7 25 is in Bin 8 5. Replace numeric values with bin labels: 2 -> 1 5 -> 2 7 -> 2 10 -> 3 11 -> 4 13 -> 4 15 -> 5 18 -> 6 21 -> 7 25 -> 8 So the discretized data using 10-bins method would be: 1, 2, 2, 3, 4, 4, 5, 6, 7, 8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值