华为oj----iNOC产品部-杨辉三角的变形 .

华为oj----iNOC产品部-杨辉三角的变形 .

此题提供三种方法,第一种,一开始就能想到的,设置一个足够大的数组存储生成的杨辉三角,然后进行判断就行,此方法参见:华为oj iNOC产品部-杨辉三角的变形

另一种方法是采用递归:

三角形的每行的个数为2*n-1,n为行数,且每行的数字左右对称。因此在查找偶数时,只需查找前n个数即可。

运用递归的思想:n行第i个数等于n-1行的第i-2,i-1,i个数相加(而不是i-1,i,i+1三个数),其次要注意的是:边缘的数都是1,边缘外的数都是0。

#include<iostream>

using namespace std;

int Getpos(int line,int num)
{
if(num< || num>*line-)
return ;
else if(num== || num==*line-)
return ;
else
return Getpos(line-,num-)+Getpos(line-,num-)+Getpos(line-,num); } int run(int x)
{
int tmp;
for(int i=;i<=x;i++)
if(Getpos(x,i)%==)
return i;
return -;
} int main()
{
int t;
cin >>t;
cout << run(t);
return ;
}

第三种方案是通过找规律:

  找规律会发现最终返回的结果只能有,-1,2,3,4 这四种结果,代码比较简单,方法参见:华为oj iNOC产品部-杨辉三角的变形

上一篇:html 输入框验证


下一篇:junit单元测试(keeps the bar green to keeps the code clean)