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

华为初级——iNOC产品部:杨辉三角形的变形

时间:2014-07-02 08:01:08      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:c++   华为   杨辉三角形变形   

bubuko.com,布布扣

bubuko.com,布布扣

源程序:

#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	int a[100][100];
	for(int i=0;i<n;i++)
	{
		a[i][0]=1;
		a[i][i*2]=1;
	}
	a[1][1]=1;
	for(int j=2;j<n;j++)
	{
		a[j][1]=a[j-1][0]+a[j-1][1];
		a[j][j*2-1]=a[j-1][(j-1)*2]+a[j-1][(j-1)*2-1];
		for(int k=2;k<j*2-1;k++)
		{
			a[j][k]=a[j-1][k-2]+a[j-1][k-1]+a[j-1][k];
		}
	}
	int flag;
	for(int j=0;j<=(n-1)*2;j++)
	{
		flag=1;
		if(a[n-1][j]%2==0)
		{
			cout<<j+1<<endl;
			flag=0;
			break;
		}
	}
	int defa=-1;
	if(flag)cout<<defa<<endl;	
	/*
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<=i*2;j++)
		{
			cout<<a[i][j]<<'\t';
		}
		cout<<endl;	
	}
	*/
	return 0;
}
运行结果:

bubuko.com,布布扣

总结:这道题目的关键在于求出这个变形的杨辉三角形。其实题目的描述有很大问题,但是已经给出了变形了的杨辉三角形,所以,可以根据例出来的三角形来写出程序。

首先:写出求杨辉三角形的程序:每一行的第一个数和最后一个数都是1;第二行的第二个数是1,;从第三行开始,每一行的第二个数是前一行的第一个数与第二个数之和,每一行的倒数第二个数是前一行的倒数第一个数与倒数第二个数的和。

然后:求出第n行的第一个偶数出现的位置。

注意:如果这一行没有偶数,则输出-1。

这道题目不是很难~

华为初级——iNOC产品部:杨辉三角形的变形,布布扣,bubuko.com

华为初级——iNOC产品部:杨辉三角形的变形

标签:c++   华为   杨辉三角形变形   

原文地址:http://blog.csdn.net/xmh1954/article/details/36203493

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