用一维数组实现php杨辉三角不用数组形

推荐这篇日记的豆列
&&&&&&&&&&&&博客分类:
& 中国古代数学史曾经有代写论文自己光辉灿烂的篇章,而杨辉三角的发现就是十分精彩的一页。杨辉三角是中国古代数学家贾宪在公元11世纪发现,并被南宋数学家杨辉在他的书中所引述,才使我们今天得以了解贾宪在数学上的重大贡献。杨辉三角是一个由数字排列成的三角形数表.一般形式如下:
&&&&&&&&&&&&&&&& 1
&&&&&&&&&&&&&&& 1& 1
&&&&&&&&&&&&&& 1& 2& 1
&&&&&&&&&&&&& 1& 3& 3& 1
&&&&&&&&&&&&&&&& ....
&&&&&&&&&&&&&&&&& ..&&&&&&&&&&&&
& 杨辉三角,我相信大家都知道。其实在高中数列中应该就用详细介绍了。在高中数学中如果用A(m,n)表示杨辉三角中的第m行第n列的元素,那么表示杨辉三角的表达式如文件1.png
那么在这里我想用我们学过的队列来实现这个获得过程
&
其基本算法如下:
&& 假设n行
&& 当n=1时将1入队
&& 当n&=2时当生成第n行第j个时
&& 如果j=1时,将1入队
&& 如果j=n时,将1入队,并将队列第一个出对
&& 当1&j&n时,将队列第一个出对记录其值并和此时队列第一个元素的和入队
其图示如文件2.png
首先得实现MyQuen类,自己定义的队列MyQuen.h
#pragma once//这是visual studio 2010中只编译一次的语句
//相当于visual C++ 6.0中 #ifndef ...
#define ...
#include&iostream&
const int Maxsize = 30;
template&class Elem&
class MyQuen
MyQuen();//构造空队列
~MyQuen();
void AddElem(Elem e);//元素e入队列
void DeleElem(Elem &e);//队首元素出队,并用e保存
bool IsEmpty();//是否为空队,是则返回true,否则返回false
bool IsFull();//是否为满队,是则返回true,否则返回false
Elem GetFrontVal();//返回队首元素的值
Elem Array[Maxsize];//存储队列元素,采用数组
template&class Elem&
MyQuen&Elem&::MyQuen()
front = 0;
template&class Elem&
MyQuen&Elem&::~MyQuen()
template&class Elem&
void MyQuen&Elem&::AddElem(Elem e)
if(!IsFull())
Array[rear++] =
if(rear == Maxsize)
cerr&&"队列已满"&&
template&class Elem&
void MyQuen&Elem&::DeleElem(Elem &e)
if(!IsEmpty())
e = Array[front++];
if(front == Maxsize)
front = 0;
cerr&&"队列已空"&&
template&class Elem&
bool MyQuen&Elem&::IsFull()
return !((rear-front+Maxsize+1)%Maxsize);
template&class Elem&
bool MyQuen&Elem&::IsEmpty()
return front ==
template&class Elem&
Elem MyQuen&Elem&::GetFrontVal()
return Array[front];
然后就是实现杨辉三角的函数
void YanghuiTri(int num)//num表示要显示的行数
MyQuen&int&
for(int i = 0;i &=i++)//表示行
for(int j = 0;j &=j++)//表示列
if(j == 0)
mq.AddElem(1);//第一个元素将1加入队列
else if(j == i)
mq.AddElem(1);//每行最后一个将1入队列
mq.DeleElem(x);//将上一行最后一个出队
cout&&x&&"
cout&&"第"&&i&&"行"&&
mq.DeleElem(x);//出队上一行
cout&&x&&" ";
mq.AddElem(x+mq.GetFrontVal());//将此时队首元素+刚出队的元素入队
最后就是主函数main.cpp
#include"MyQuen.h"
#include&iostream&
void YanghuiTri(int num);
int main()
cout&&"请输入要显示的行数:";
YanghuiTri(n);
}
运行结果如文件3.png
该列子只能显示杨辉三角的前27行,这是由于数组开辟的内存有限所致。这个只需修改MyQuen.h中的Maxsize的值
浏览: 31388 次
来自: 长沙
请问我想在同一个窗口实现不同图形的绘制该加什么函数呢?就是使用 ...
NeilKang 写道你好,能交流一下吗?我编译老是不成功,我 ...
你好,能交流一下吗?我编译老是不成功,我的QQ ...
bewithme 写道嗯,顶住,希望有一天看到你写的OS。谢谢 ...
沙舟狼客 写道能不能把你的环境给我说一下,具体怎么配置运行这段 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'13:19 提问
编写程序,生成并输出杨辉三角形(10行)。
在C语言中,运用数组,编写程序,生成并输出杨辉三角形(10行)。
按赞数排序
杨辉三角形的第n行的第m个元素等于n!/((n-m)!*m!)
因此编程如下
int x = 10;
for (int n = 1; n & n++)
for (int m = 1; m &= m++)
printf("%d\t", p(n) / (p(n - m) * p(m)));
printf("\n");
再写个阶乘函数:
int p(int x)
int r = 1;
if (x & 2)
for (int i = 2; i &= i++)
这个问题才回答过
这种问题,下回自己百度一下,代码一大堆
其他相关推荐导读:C语言――运用一维数组和二维数组输出杨辉三角,//定义变量i,j,a[n],并且为a[0],a[1]赋初值//输出第一层和第二,//每层的第一个值与上一层的第一个值相等//每个数等于它上方两数之和//输出该层,**********二维数组**********,C语言――运用一维数组和二维数组输出杨辉三角**********一维数组**********#include#definen10intmC语言――运用一维数组和二维数组输出杨辉三角
**********一维数组********** #include #define n 10 int main() {
int a[n]={1,1},i,j;
printf(\ for(i=1;i<n;i++)
a[i+1]=a[i];
for(j=i;j>0;j--)
a[j]=a[j-1]+a[j]; for(j=0;j<i+2;j++)
//定义变量i,j,a[n],并且为a[0],a[1]赋初值
//输出第一层和第二层
//输出剩下层
//每层的第一个值与上一层的第一个值相等
//每个数等于它上方两数之和
//输出该层
printf(\} return 0; **********二维数组********** #include int main() {
int a[30][30]={0},i,j,n=10;
for(i=0;i<=n-1;i++)
a[i][0]=1;
for(i=1;i<=n-1;i++)
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<=n-1;i++)
for(j=0;j<=i;j++)
printf(\ }
return 0; } 包含总结汇报、文档下载、资格考试、旅游景点、专业文献、出国留学、外语学习、党团工作、word文档以及C语言运用一维数组和二维数组输出杨辉三角等内容。
相关内容搜索}

我要回帖

更多关于 杨辉三角形 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信