华为OJ——iNOC产品部-杨辉三角的变形
2016-07-15 20:31
190 查看
iNOC产品部-杨辉三角的变形
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。
输入n(n <= 1000000000)
[b]输入描述:[/b]
输入一个int整数
[b]输出描述:[/b]
输出返回的int值
[b]输入例子:[/b]
4
[b]输出例子:[/b]
3
解答代码:
题目描述
11 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。
输入n(n <= 1000000000)
[b]输入描述:[/b]
输入一个int整数
[b]输出描述:[/b]
输出返回的int值
[b]输入例子:[/b]
4
[b]输出例子:[/b]
3
解答代码:
#include<iostream> using namespace std; int main() { int n; int i,j; while(cin>>n) { int judge[1000][2000]= {0}; judge[0][0]=1; //初始化三角形左侧和右侧的数 for(int i=1; i<n; i++) { judge[i][0]=1; judge[i][2*i]=1; } judge[1][1]=1; //初始化三角形中间部分的数 for(i=2; i<n; i++) { judge[i][1]=judge[i-1][0]+judge[i-1][1]; judge[i][2*i-1]=judge[i][1]; } for(i=2; i<n; i++) { for(int j=2; j<=2*i-1; j++) judge[i][j]=judge[i-1][j]+judge[i-1][j-1]+judge[i-1][j-2]; } //查看输出 /* for(i=0;i<n;i++) { for(j=0;j<2*n-1;j++) cout<<judge[i][j]<<' '; cout<<endl; } */ int k=0; for(i=0; i<2*n-1; i++) { if(judge[n-1][i]%2==0) { k++; cout<<i+1<<endl; break; } } if(k==0) cout<<"-1"<<endl; } return 0; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 如何组织构建多文件 C 语言程序(二)
- 关于指针的一些事情
- 如何写好 C main 函数
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- 华为路由器密码恢复
- 华为交换机的后缀详解
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- Lua中调用C++函数示例
- Lua和C语言的交互详解
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结