- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图递归地实现它(迭代似乎不太优雅,但如果我错了请纠正我)。但输出似乎给了我尾随零,前几行是意外的。我已经检查了基本情况和递归情况,但它们似乎没问题。问题肯定在函数内。
#include <iostream>
unsigned long long p[1005][1005];
void pascal(int n)
{
if (n == 1)
{
p[0][0] = 1;
return;
}
else if (n == 2)
{
p[0][0] = 1; p[0][1] = 1;
return;
}
p[n][0] = 1;
p[n][n-1] = 1;
pascal(n-1);
for (int i = 1; i < n;++i)
{
p[n][i] = p[n-1][i-1] + p[n-1][i];
}
return;
}
int main()
{
int n;
std::cin >> n;
pascal(n);
for (int i = 0 ; i < n ; ++i)
{
for (int j = 0 ;j < i+1 ; ++j)
{
std::cout << p[i][j] << " ";
}
std::cout << "\n";
}
}
输出:(我输入)15
1
0 0
0 0 0
1 0 0 0
1 1 0 0 0
1 2 1 0 0 0
1 3 3 1 0 0 0
1 4 6 4 1 0 0 0
1 5 10 10 5 1 0 0 0
1 6 15 20 15 6 1 0 0 0
1 7 21 35 35 21 7 1 0 0 0
1 8 28 56 70 56 28 8 1 0 0 0
1 9 36 84 126 126 84 36 9 1 0 0 0
1 10 45 120 210 252 210 120 45 10 1 0 0 0
1 11 55 165 330 462 462 330 165 55 11 1 0 0 0
最佳答案
基本案例 n = 1
和 n = 2
过于激进(对于像 10 这样的普通输入永远不会达到 1,因为 2 过早地中断了递归,在数组中留下未触及的零)。 n
的这些值应该被递归案例自动覆盖。我们什么都不做的真正基本情况是 n < 0
.
void pascal(int n)
{
if (n < 0) return;
p[n][0] = 1;
pascal(n - 1);
for (int i = 1; i <= n; ++i)
{
p[n][i] = p[n-1][i-1] + p[n-1][i];
}
}
n = 15
的输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1
1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
话虽如此,hard code 是不好的做法数组的大小。考虑使用 vector 并将参数传递给函数,这样它们就不会改变全局状态。
我们也可以(对我而言)以更直观的方式迭代编写它:
void pascal(int n)
{
for (int i = 0; i < n; ++i)
{
p[i][0] = 1;
for (int j = 1; j <= i; ++j)
{
p[i][j] = p[i-1][j-1] + p[i-1][j];
}
}
}
关于c++ - 为什么这个 Pascal Triangle 实现给我尾随零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58893937/
我有以下三 Angular 形 由以下 css 创建: .triangle { width: 0; height: 0; border-left: 5px solid tran
在(不久前)阅读索引索引的三角形列表后,由于需要较少的绘制调用,因此我决定在三角形列表上构建我的引擎。今天,我偶然发现了0xffffffff,在DX中该值被认为是 strip 切割索引,因此您可以在一
该类包含: 三个 double 数据字段,分别命名为 side1、side2 和 side3,具有默认值1.0 表示三角形的三边 无参数构造函数,用于创建具有指定 side1、side2 和 side
我一直在尝试用 C 语言解决 HackerRank 网站中的“小三角形,大三角形”问题,这是一种排序数组问题,我使用了选择排序算法。我的代码似乎可以工作,但它仅适用于某些测试用例。这是任务: You
我需要打印一个三角形及其倒三角形(站在其尖端)。我设法只打印出三角形。我知道我可以轻松使用 for 循环,但我想知道如何使用递归,就我而言,我不知道如何打印三角形和倒三角形。谢谢。 Example d
如果使用函数 triangular_mesh 可以传递一组三角形,以索引列表、顶点位置和一组数据的形式给出,以将颜色分配给顶点。然后通过顶点颜色之间的插值对三角形着色。 如何在不进行任何插值的情况下按
我正在实现 Wikipedia 中介绍的 Bowyer-Watson 算法.在我的实现中,一切都如我所料,直到伪代码的最后一部分: for each triangle in triangulation
题目地址 https://leetcode.com/problems/triangle/description/ 题目描述: Given a triangle, find the minimum
我想知道是否有一些教程或指南来理解和实现 3D 环境中的三角形-三角形相交测试。 (我不需要知道交叉点发生的确切位置,但只需要知道交叉点已经发生) 我打算按照理论 pdf 来实现它,但我很困在 计算三
我制作了一个程序来制作帕斯卡三角形并输入数字(行)> 5,存在对齐问题,即 ncr > 10。请帮帮我。我已经包含了程序输出的图像。 Output Image #include int factori
由于很难解释,我将向您展示我假装的图像。 问题不在于“三 Angular 形”,而在于要在三 Angular 形生成的“空间”中显示的图像背景。 最佳答案 这是我的方法,如何处理这个任务。我将伪元素
题目地址:https://leetcode.com/problems/pascals-triangle/open in new window Total Accepted: 83023 Total
如何使用 Triangle.NET 对具有如下所示孔的多边形进行三角剖分? 我需要由三角形覆盖的绿色区域。我想我需要在触摸点上分割外部轮廓的右侧部分,但之后我不知道是否需要将两个轮廓合并为一个(在黑色
我在碰撞检测代码中使用的代码是这样的: (注意:Vector3f 是 LWJGL 库的一部分。) (注2:Tri是由LWJGL的Vector3fs.v1、v2、v3三个组成的类。) public Ve
有一个三角网格生成器(Shewchuk,CMU), "Triangle" ,由于其重量轻而受到人们的推荐。它是用 C 编写的。但是我无法在我的 VS2012 C++ 项目中使用它。我正在使用 x64
我应该编写的程序应该按以下方式打印三角形: 如果行数为2: * *** 如果行数为3: * * * ***** 但是,我所做的以下代码打印了最后一行的
(我在这里搜索并通读了钻石和虚拟继承问题,但找不到答案。我的想法是这种情况有点不寻常,我愿意考虑我的要求有点关闭。另一方面,我认为这应该以一种“不错”的方式实现。) 情况及要求: 我有一个 C++ 类
我构建 HTML/CSS/JS 菜单并希望将箭头向右对齐以指向该元素是子菜单。 我的问题是在 Firefox 中三 Angular 形(“▶”符号)显示在下一行而不是当前行... Chromium 在
我正在创建一个 OpenGL 程序,它只是创建一个三角形并将其绘制在屏幕上。我创建了一个名为 Drawable 的类,其中包含绘制函数以及使用的 VAO 和 VBO 对象。我还创建了一个继承自 Dra
我正在尝试使用嵌套循环打印下面的图片(我应该使用 for 和 while 循环): ** **** ****** ******** 以 5 个空格开头,每行减少 2 个空格。从 2
我是一名优秀的程序员,十分优秀!