当前位置:网站首页>杨辉三角的各种输出:
杨辉三角的各种输出:
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;
}边栏推荐
- Use the PostgreSQL GRANT command to modify permissions on various database objects
- 官宣!苏州吴江开发区上线电子劳动合同平台
- 程序员自由工作的三大痛点?一文教你统统解决
- 品牌广告投放平台的中台化应用与实践
- 数字孪生万物可视 | 联接现实世界与数字空间
- Writing Elegant Kotlin Code: Talk About What I Think "Kotlinic"
- INFTnews | Forbes Web3 exploration
- Add obsolete flag to pdf
- GBASE 8s 如何估算索引使用多少空间
- 第3章业务功能开发(线索关联市场活动,插入数据并查询)
猜你喜欢

02-SDRAM:自动刷新

【Verilog】Verilog设计进阶

leetcode-593:有效的正方形

The world is on fire, Google servers have crashed

GET_ENTITYSET Method Implementation Guide for SAP ABAP OData Service Data Provider Class

数字孪生万物可视 | 联接现实世界与数字空间

5V升压充电8.4V芯片

Official announcement!Suzhou Wujiang Development Zone launches electronic labor contract platform

Numpy数组处理(二)

普洛斯荣获两项“数据中心绿色等级评估”5A级认证
随机推荐
GBASE 8s 自定义存储过程和函数示例
全系都更换带T四缸,安全、舒适一个不落
GBASE 8s 数据库的大对象和日志备份
网站ping端口的操作方法和命令介绍
数字孪生万物可视 | 联接现实世界与数字空间
品牌广告投放平台的中台化应用与实践
针对自动识别大麦网滑块验证码,提出解决方案,并进行分析、总结
qt中qstring合并字符串
【Verilog】Verilog设计进阶
linux install redis using script
GBASE 8s 如何通过脚本获取bufwait等统计信息
golang文件行号探索
基于PaddleSpeech搭建个人语音听写服务
刚重装的win7系统不能上网(深度系统安装步骤)
SwiftUI 手势大全之可用的手势类型有哪些(教程含源码)
SwiftUI Apple App Store 发布App的初学者完整指南
解释器模式
容器网络硬核技术内幕 (24) 知微知彰,知柔知刚 (上)
[HDLBits brush questions] Verilog Language (4) Procedures and More Verilog Features section
力扣解法汇总593-有效的正方形