杨辉三角的变形【编程题】

原创 2017年01月03日 19:10:10

题目

描述

          1
       1  1  1
    1  2  3  2  1
  1 3  6  7  6  3  1
1 4 10 16 19 16 10  4  1

以上三角形的数阵,第一行只有一个数1,以下每行的每个数,是恰好是它上面的数,左上角数到右上角的数,3个数之和(如果不存在某个数,认为该数就是0)。
求第n行第一个偶数出现的位置。如果没有偶数,则输出-1。例如输入3,则输出2,输入4则输出3。

输入

输入一个int整数

输出

输出返回的int值

样例输入

4

样例输出

3

代码

这题毫无思路。。。看过大神的代码。。。我可以膜拜一下了
这题用递归写的真是太赞了~

#include <iostream>
using namespace std;
int C(int n,int k)
{
    if(k==1 || k==n*2-1)
        return 1;
    if (k<1 ||k>n*2-1)
        return 0;
    else
        return C(n-1,k-2)+C(n-1,k-1)+C(n-1,k);
}
int main()
{
    int N;
    cin>>N;
    for(int j=1; j<=2*N-1; j++)
    {
        if(C(N,j)%2==0)
        {
            cout<<j<<endl;
            break;
        }
        else if(j==2*N-1)
            cout<<"-1"<<endl;
    }
}

第二个代码。。。
大神用栈的思想一层一层来求。。。膜拜

#include <iostream>
#include <vector>
#include <string>
#include <set>
#include <algorithm>
using namespace std;

int main()
{
    vector<int> current,next;
    int n;
    cin>>n;
    n--;//第一行没有偶数
    current.push_back(1);//最左边的1
    while(n--)
    {
        next.push_back(1);
        if(current.size()==1)//第二行
        {
            next.push_back(1);
        }
        else//中间的数
        {
            for(unsigned int i=0; i<current.size(); i++)
            {
                if(i==0)
                {
                    next.push_back(current[i]+current[i+1]);
                }
                else if(i<=current.size()-2)
                {
                    next.push_back(current[i]+current[i-1]+current[i+1]);
                }
                else
                {
                    next.push_back(current[i]+current[i-1]);
                }
            }
        }
        next.push_back(1);//最右边的1
        current.clear();
        current=next;
        next.clear();
    }
    unsigned int i;
    for(i=0; i<current.size(); i++)
    {
        if(current[i]%2==0)
        {
            cout<<i+1<<endl;
            break;
        }
    }

    if(i==current.size())
    {
        cout<<-1<<endl;
    }
    return 0;
}

这里写图片描述

版权声明:本文为博主原创文章,欢迎转载,分享是一种态度。

相关文章推荐

[编程题]iNOC产品部-杨辉三角的变形

Talk is cheap, show me the code. 一、问题描述 1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 11 4 ...

杨辉三角的变形

  • 2013-12-23 23:46
  • 11KB
  • 下载

【华为OJ】【038-iNOC产品部-杨辉三角的变形】

【华为OJ】【算法总篇章】【华为OJ】【038-iNOC产品部-杨辉三角的变形】【工程下载】题目描述 1 1 1 1 1 2 3 2 1...

庞果英雄会——杨辉三角的变形

题目详情          1      1   1  1   1  2   3  2  1 1 3  6   7 &#...

庞果网之杨辉三角的变形

题目详情          1      1   1  1   1  2   3  2  1 1  3  6  ...

杨辉三角的变形

题目详情          1       1  1  1    1  2  3  2  1 1  3...

华为OJ训练之0024-170107-杨辉三角的变形

题目============================================// 1 // 1 1 1 // 1 2 3 ...

华为OJ——iNOC产品部-杨辉三角的变形

题目描述 1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 1 1 4 10 16 19 ...

杨辉三角的变形【解】--英雄会

今天看到一个有趣的题目: 1 1 1 1 1 2 3 2 1 1 3 6 7 6 3 1 以上三角形的数阵,...

杨辉三角的变形问题ruby解法

class Trigle def first_even_number_position_of_line(line_number) line_array = [1] 2.upto(l...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)