关于下面这个三角形数阵,请问怎么解答呢,如果有会的请帮我看看,分析或者明确解释下
//思路: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;
}