杨辉三角形 C++ 无需数组
问题描述:
请打印出下列三角形:
很明显,第i行的第j个元素等于第i-1行的第j-1和j+1的元素和。
所以较常见的方法是用数组存储所有行的值,空格位置默认为0。
但下面这种方法不需要额外的空间,直接观察规则得到当前位置元素的值等于前一个位置的值 *(i - j + 1) / j. i为行号,j为列号(但这里的列不包括数字后面空格所占位置)。
参考自-[菜鸟教程]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include<stdio.h> #include<iostream> using namespace std; int main() { int rows, coef = 1; cout << "Enter number of rows: " ; cin >> rows; for ( int i = 0; i < rows; ++i) { for ( int space = 0; space < rows-i-1; ++space) cout << " " ; for ( int j = 0; j <= i; ++j) { if (j == 0 || i == 0) coef = 1; else coef = coef * (i - j + 1) / j; cout << coef << " " ; } cout << endl; } return 0; } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2019-03-16 201812-4 数据中心(kruskal)