关于下面这个三角形数阵,请问怎么解答呢

关于下面这个三角形数阵,请问怎么解答呢,如果有会的请帮我看看,分析或者明确解释下

img


//思路:1.找规律,发现,如果用数组表示的话,第1行的1并不是在最左边,而是在第n个元素位置(n代表行号)
//       2.第n行的元素的第一个和最后一个是要提前赋值为1.其他行的元素,除第一个外,按照公式
//        a[i][j]=a[i][j-1]+a[i][j]+a[i][j+1];
#include<iostream>
#include<vector>
using namespace std;
void printYH(int n)
{
    
    vector<vector<int> >a(n,vector<int>(2*n-1,0));
    a[0][n-1]=a[n-1][0]=a[n-1][2*n-2]=1;
    if(n<2)
    {
        cout<<"-1"<<endl;
        return ;
    }
    for(int i=1;i<n;++i)
        for(int j=1;j<2*n-2;++j)
            a[i][j]=a[i-1][j]+a[i-1][j-1]+a[i-1][j+1];
    for(int i=0;i<2*n-1;++i)
        if(a[n-1][i]!=0 && (a[n-1][i]%2==0))
        {
            cout<<i+1<<endl;
            return ;
        }
    return ;                    
}
int main()
{
    int n;
    while(cin>>n)
    {
        printYH(n);
    }
    return 0;
}