简单数列

来源:互联网 发布:68淘宝小号网 编辑:程序博客网 时间:2024/04/28 15:33

1
11
21
1211
111221
找出上面数列的规律,设计一个程序能输出这个数列的前N项(N=20)

解答:
数列规律:
第一行:1,没什么好说的
第二行:11,"1"个"1"
第三行:21,"2"个"1"
第四行:1211,"1"个"2"和"1"个"1"
第五行:111221,"1"个"1"、"1"个"2"和"2"个"1"
明白了吧,很简单
所以,第六行就是312211,"3"个"1"、"2"个"2"和"1"个"1"
可以证明,这个数列中不可能出现"4","3"不能连续出现等等性质

 

#include<iostream>

using namespace std;

int main()
{
    
const int max_j(1000);
    
const int max_i(20) ;
    
int arr[max_i][max_j],n(-1),i;
    
while (n<=0){
          cout 
<<"Please input an integer(<=20):";
          cin 
>>n;
          }

    
for ( i=0;i !=max_i;++i)
      
for (int j=0;j !=max_j;++j)
        arr[i][j]
=0;
    arr[
0][0]=1;
    cout 
<<arr[0][0]<<endl;
    
for ( i=1;i !=n;++i)
    
{
        
for (int j(0),time(1),k(0);arr[i-1][j] !=0;++j)
            
if (arr[i-1][j]==arr[i-1][j+1])
               
++time;
            
else
            
{
                 cout 
<<time<<arr[i-1][j];
                 arr[i][k
++]=time;
                 arr[i][k
++]=arr[i-1][j];
                 time
=1;
                 }
                   
        cout 
<<endl;
        }

    system(
"pause");
    
return 0;
}

原创粉丝点击