淘先锋技术网

首页 1 2 3 4 5 6 7

杨辉三角打印与队列之间的关系

  1. 杨辉三角有什么规律
  2. 队列的特点
  3. 思考之间的联系

答案:

  1. 杨辉三角的特点
  1. 除第一行外,其他各行两边得元素都是1
  2. 每行的行数和数字的数量相等,我们用n代替
  3. 每行除1之外的中间第1元素,是由上一行的第一个元素与第二个元素的和,第二个中心元素是第二个和第三个元素的和,以此类推
  4. 每行除1外的中间元素的数目=行数-2  ,2表示的是两边两个1
  1. 队列的特点
  1.  先入先出
  2. 可取队头队尾元素
  1. 联系

首先第一行,入队1

第二行 入队1,检查发现,不需要中心元素,对上一行元素出队列处理,入队1

第三行 入队1  判断需要一个中心元素(根据n-2),即上一行的第一个元素和第二个元素的和,将                         上一行元素分别出栈add,temp,存储,相加,值进行这次的入队列,然后将第二个                          出栈的值temp,赋给add(给第二个中心元素的出现,提供便利),检查不需要再                          次中心元素 ,出循环

           入队1

第四行 入队1  需要一个中心元素,即上一行的第一个元素和第二个元素的和,将上一行

                     元素分别出栈add,temp,存储,相加,值进行这次的入队列,然后将第二个出栈的                         值,赋 给add,检查到中间元素还需要一个,则将继续出队列,并将其赋值给b,然                        后将值继 续送入栈中,将temp赋给add,继续检查不需要中心元素,出循环

           入队1

不断循环。。。

      

 void yanghui(int N)
{
	int i, n, temp, m, add;
	LinkQueue Q;
	InitQueue(Q);
	m = N;//表示行数
	n = 1;//

	while (N >= n)
	{
		for (i = --m; i > 0; i--)
			
		printf(" ");//预留空间 
		printf(" 1");//输出格式 
		EnQueue(Q, 1);//入队列 
		if (n == 1)
		{
			n++;
			printf("\n");
			continue;
		}
		DeQueue(Q, add);//出队列 
	
		for (i = 0; i < n-2; i++)
		{
			DeQueue(Q, temp);
			printf(" %d", temp + add);
			
			EnQueue(Q, add + temp);
			
			add = temp;
		}
		printf(" 1\n");
		
		EnQueue(Q, 1);
		n++;
	};
}