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


源程序:

#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;
}
运行结果:


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

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

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

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

这道题目不是很难~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值