码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-02-05 16:41:31      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:ima   get   方法   tail   ++   code   cin   简单   style   

技术分享

 

此题提供三种方法,第一种,一开始就能想到的,设置一个足够大的数组存储生成的杨辉三角,然后进行判断就行,此方法参见:华为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<1 || num>2*line-1)
        return 0;
    else if(num==1 || num==2*line-1)
        return 1;
    else
        return Getpos(line-1,num-2)+Getpos(line-1,num-1)+Getpos(line-1,num);
        
}

int run(int x)
{
    int tmp;
    for(int i=1;i<=x;i++)
        if(Getpos(x,i)%2==0)
            return i;
    return -1;
}

int main()
{
    int t;
    cin >>t;
    cout << run(t);
    return 0;
}

 

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

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

 

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

标签:ima   get   方法   tail   ++   code   cin   简单   style   

原文地址:http://www.cnblogs.com/wujing-hubei/p/6367902.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!