每一行都和上一行有关,就顺序计数上一行连续的数字,按照题意组成下一行
数据太大,打表是不现实的
#include<iostream> #include<cstdio> using namespace std; int a[35][10005]; int tmp=0,cnt=0,n; int main() { int x; cin>>n; a[1][1]=1; a[1][0]=tmp=1; for(int i=2;i<=n;i++) { x=0; cnt=0; for(int j=1;j<=tmp;j++) { cnt++; if(a[i-1][j]==a[i-1][j-1]&&a[i-1][j]!=a[i-1][j+1]) { a[i][++x]=cnt; a[i][++x]=a[i-1][j]; cnt=0; } else if(j==1&&a[i-1][j]!=a[i-1][j+1]) { a[i][++x]=cnt; a[i][++x]=a[i-1][j]; cnt=0; // printf("+++++++\n"); } else if(a[i-1][j]!=a[i-1][j-1]&&a[i-1][j]!=a[i-1][j+1]) { a[i][++x]=cnt; a[i][++x]=a[i-1][j]; cnt=0; // printf("+++++++\n"); } } tmp=x; a[i][0]=x; } /* for(int i=1;i<=n;i++) { for(int j=1;j<=a[i][0];j++) { printf("%d ",a[i][j]); } printf("\n"); } */ for(int i=1;i<=a[n][0];i++) { printf("%d",a[n][i]); } printf("\n"); return 0; }