当前位置:网站首页>杨辉三角的各种输出:
杨辉三角的各种输出:
2022-07-29 21:22:00 【疯疯癫癫才自由】
杨辉三角的各种输出:
1)两个一维数组轮换进行输出:
/**
1)两个一维数组轮换进行输出:
*/
#include <iostream>
using namespace std;
int main() //两个一维数组轮换进行输出
{
int n;
cin >> n;
int a[n],b[n];
b[0]=b[1]=1;
printf("%-5d\n",b[0]);
printf("%-5d%-5d\n",b[0],b[1]);
for(int i=2;i<n;++i)
{
a[0]=a[i]=1;
b[0]=b[i]=1;
for(int j=1;j<=i-1;++j)
{
if(i&1)
b[j]=a[j]+a[j-1];
else
a[j]=b[j]+b[j-1];
}
if(i&1)
for(int j=0;j<=i;++j)
printf("%-5d",b[j]);
else
for(int j=0;j<=i;++j)
printf("%-5d",a[j]);
printf("\n");
}
return 0;
}2)一个一维数组反推输出:
/**
2)一个一维数组反推输出:
*/
/**
#include <iostream>
using namespace std;
int main() //一个一维数组反推输出
{
int n;
cin >> n;
int a[n];
a[0]=a[1]=1;
printf("%-5d\n",a[0]);
printf("%-5d%-5d\n",a[0],a[1]);
for(int i=2;i<n;++i)
{
a[0]=a[i]=1;
for(int j=i-1;j>0;--j)
{
a[j]=a[j]+a[j-1];
}
for(int j=0;j<=i;++j)
printf("%-5d",a[j]);
printf("\n");
}
return 0;
}
*/3)一个一维数组正推输出:
/**
3)一个一维数组正推输出:
*/
/**
#include <iostream>
using namespace std;
int main() //一个一维数组正推输出
{
int n;
cin >> n;
int a[n];
a[0]=a[1]=1;
printf("%-5d\n",a[0]);
printf("%-5d%-5d\n",a[0],a[1]);
for(int i=2;i<n;++i)
{
a[0]=a[i]=1;
int last=1,temp; //temp保存将要被覆盖的值
for(int j=1;j<i;++j)
{
temp=a[j];
a[j]=a[j]+last;
last=temp; //last保存j-1号元素的值
}
for(int j=0;j<=i;++j)
printf("%-5d",a[j]);
printf("\n");
}
return 0;
}
*//**
4)要求:每行的数据居中对齐输出,使得每一对角线上的元素都是一条直线
anaysis: 由于要使得每一对角线上的元素都是一条直线,那么需要找出每一个
元素所需要的字长宽度,如何找呢?想必肯定是由最大的数据决定,
我们把每个数字放在等宽的格子里面,
格子宽度=最大数字宽度+1||2;
行前留白:(line_count-line_no)*unit_width/2;
格子内部:数据居中,
左边留白:(unit_width-data_width)/2;
右边留白:(unit_width-左边留白-data_width);
*/
/**
4)要求:每行的数据居中对齐输出,使得每一对角线上的元素都是一条直线
anaysis: 由于要使得每一对角线上的元素都是一条直线,那么需要找出每一个
元素所需要的字长宽度,如何找呢?想必肯定是由最大的数据决定,
我们把每个数字放在等宽的格子里面,
格子宽度=最大数字宽度+1||2;
行前留白:(line_count-line_no)*unit_width/2;
格子内部:数据居中,
左边留白:(unit_width-data_width)/2;
右边留白:(unit_width-左边留白-data_width);
*/
#include <iostream>
using namespace std;
typedef long long LL;
void output(int *a,int line_no,int data_size);
LL C(int n,int m); //计算杨辉三角中最大的值
int unit_width , line_count;
int main() //一个一维数组反推输出
{
cin >> line_count;
LL temp = C(line_count-1,line_count/2); //计算杨辉三角中最大的值
cout << temp << endl; //其中装数的格子能装下最大值即一定能装下其他数字
while(temp!=0)
{
++unit_width;
temp/=10;
} //计算最大数的位数
if(unit_width&1)
++unit_width; //保证unit_width是偶数
else
unit_width+=2;
cout << "unit_width: " << unit_width << endl;
int a[line_count];
a[0]=1;
cout << "line_count: " << line_count << endl;
output(a,1,1);
for(int i=1;i<line_count;++i)
{
a[0]=a[i]=1;
for(int j=i-1;j>0;--j)
{
a[j]=a[j]+a[j-1];
}
output(a,i+1,i+1);
}
return 0;
}
void output(int *a,int line_no,int data_size)
{
// cout << "line_count : " << line_count << endl;
// cout << "line_no : " << line_no << endl;
// cout << "unit_width : " << unit_width << endl;
// cout << "(line_count-line_no)*unit_width/2: " <<(line_count-line_no)*unit_width/2 << endl;
for(int i=1;i<=(line_count-line_no)*unit_width/2;++i)
cout << ' ';
for(int i=0;i<data_size;++i)
{
int data_width=0,temp=a[i];
while(temp!=0)
{
++data_width;
temp/=10;
}
int left_space=(unit_width-data_width)/2;
for(int j=0;j<left_space;++j)
cout << ' ';
cout << a[i];
int right_space=unit_width-left_space-data_width;
for(int j=0;j<right_space;++j)
cout << ' ';
}
cout << endl;
}
LL C(int n,int m)
{
LL val=1;
for(int i=1;i<=m;++i)
{
val*=(n-m+i);
val/=i;
}
return val;
}边栏推荐
- 网络通信编程基础,BIO,NIO
- 全系都更换带T四缸,安全、舒适一个不落
- Bug fix: Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]
- GBASE 8s 自定义存储过程和函数使用
- qt中qstring合并字符串
- bright day
- 解决报错 WARNING: IPv4 forwarding is disabled. Networking will not work.
- [BUG]一个数组new的时候sizeof()忘乘上个数
- 5 V booster charge 8.4 V chip
- 初识网络的简单概念
猜你喜欢
随机推荐
PointPillars 工程复现
iNFTnews | 福布斯的Web3探索
PyQt5学习一(环境搭建)
网络通信编程基础,BIO,NIO
sizeof和strlen的区别(strlen和sizeof的用法)
OPEN数据 | 新库上线 | CnOpenDataA股上市公司社会责任报告数据
24-hour London gold chart analysis
qt中qstring合并字符串
南华早报 | 助力亚洲最具公信力报章实现AD域自动化管理
GBASE 8s 数据库的智能大对象备份
容器网络硬核技术内幕 (26) 知微知彰,知柔知刚 (下)
微信小程序如何开通支付功能?
OneNote tutorial, how to take notes in OneNote?
银河麒麟V10 SP2 x86编译安装 PHP7.4
新库上线 | CnOpenData国际货运代理信息数据
AI全流程开发难题破解之钥
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦!
容器网络硬核技术内幕 (小结-下)
Xshell 7 prompts "To continue using this program, you must apply the latest update or use a new version"
LeetCode 593 Valid Squares [Math] HERODING's Road to LeetCode









