简单数列

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值