1.
1 3
1 1 1 3
3 1 1 3
1 3 2 1 1 3
1 1 1 3 1 2 2 1 1 3
3 1 1 3 1 1 2 2 2 1 1 3
……
第一行是默认的1 3;
从第二行开始 一个1 一个3 所以是1 1 1 3
第三行 三个1 一个三 所以是3 1 1 3
第四行 一个3 两个1 一个3 所以是1 3 2 1 1 3
.。。。。。。。
1 #include<iostream> 2 #include<string.h> 3 using namespace std; 4 int main() 5 { 6 int num = 0;//重复次数 7 int a_column = 0;//a数组的列数 8 int a[10][50];//找规律的数组 9 memset(a,0,sizeof(int)*500);//把数组归零 10 a[0][0] = 1;//数组默认第一行是1 3 11 a[0][1] = 3; 12 int flag;//标记当前数 13 for(int i = 0 ; i < 9 ; i ++) 14 { 15 flag = a[i][0]; 16 for(int j = 0 ; j < 49 ; j++) 17 { 18 if(a[i][j]!=0) 19 { 20 if(a[i][j]==flag)num++;//如果a里面一行有多个跟flag一样的数,num++ 21 else 22 { 23 flag = a[i][j]; 24 a[i+1][a_column] = num;//数组下一行第一个数为num数 25 a_column++; 26 a[i+1][a_column] = a[i][j-1];//数组下一行第二个数为flag 27 a_column++; 28 num = 1; 29 } 30 } 31 else //如果为0 代表这行读完了 32 { 33 a[i+1][a_column] = num; 34 a_column++; 35 a[i+1][a_column] = a[i][j-1]; 36 a_column++; 37 j = 50;//为了结束这次j循环 38 } 39 } 40 a_column = 0; 41 num = 0; 42 } 43 for(int i = 0 ; i < 9 ; i++ ) 44 { 45 for(int j = 0 ; j < 49 ; j++ ) 46 { 47 if(a[i][j]!=0)cout<<a[i][j] <<" "; 48 } 49 cout<<endl; 50 } 51 }