【项目 2-杨辉三角】编写程序,打印出以下形式的扬辉三角形。杨辉三角是一个由数字排列成的三角形数表,一般形式如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
......................................................
杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。 一、使用一维数组:据“F(x)=F(x)+F(x-1)”计算。此算法比较快,但数据受数组大小限制。可以将杨辉三角形的值放在一个方形矩阵的下半三角中,如果需打印 7 行杨辉三角形,应该定义等于或大于 7X7 的方形矩阵,只是矩阵的上半部和其余部分并不使用。
### 杨辉三角形具有如下特点:
- 第 0 列和对角线上的元素都为 1。
- 除第 0 列和对角线上的元素以外,其它元素的值均为前一行上的同列元素和前一列元素之和。
### 代码:
~~~
// 杨辉三角形算法.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int factorial(int n);
int combine(int a, int b);
void space(int t, int line);
int _tmain(int argc, _TCHAR* argv[])
{
int line;
cout<<"Please Input the line number :";
cin>>line;
while(line!=-1){
for( int i=1;i<line;i++){
space(i,line);
for(int j =0; j<i; j++){
cout << combine(j, i-1)<<" ";
}
cout<<endl;
}
cout <<endl<<" Please Input the line number: (enter -1 to quit) ";
cin>>line;
}
return 0;
}
int factorial(int n){
int i =1;
int product =1;
while(i<=n){
product =product*i;
i++;
}
return product;
}
int combine(int a, int b){
int result;
if( a==0||b==0)
return 1;
else
result = factorial(b)/(factorial(a)*factorial(b-a));
return result;
}
void space ( int t, int line){
for(int p =1; p<=(line-t);p++)
cout <<" ";
}
~~~
### 输出结果:
![](https://box.kancloud.cn/e9fc572b4169ce1fc90a70737d5d2c4b_668x434.png)
**转载请注明出处:http://blog.csdn.net/utimes/article/details/8453961**
- 前言
- 螺旋矩阵、螺旋队列算法
- 程序算法艺术与实践:稀尔排序、冒泡排序和快速排序
- Josephu 问题:数组实现和链表实现
- 杨辉三角形算法
- 位图排序
- 堆排序的实现
- Juggling算法
- 【编程珠玑】排序与位向量
- 取样问题
- 变位词实现
- 随机顺序的随机整数
- 插入排序
- 二分搜索
- 产生不重复的随机数
- 约瑟夫环解法
- 快速排序
- 旋转交换或向量旋转
- 块变换(字符反转)
- 如何优化程序打印出小于100000的素数
- 基本的排序算法原理与实现
- 利用马尔可夫链生成随机文本
- 字典树,后缀树
- B-和B+树
- 程序算法艺术与实践引导
- 程序算法艺术与实践:基础知识之有关算法的基本概念
- 程序算法艺术与实践:经典排序算法之桶排序
- 程序算法艺术与实践:基础知识之函数的渐近的界
- 程序算法艺术与实践:递归策略之矩阵乘法问题
- 程序算法艺术与实践:递归策略之Fibonacci数列
- 程序算法艺术与实践:递归策略基本的思想
- 程序算法艺术与实践:经典排序算法之插入排序
- 程序算法艺术与实践:递归策略之递归,循环与迭代