C#初学者使用数组和算法简单输出杨辉三角
本帖最后由 apples1949 于 2022-7-31 16:17 编辑用Excel制作的简单数组参考表格
源码
using System;
namespace _20220727
{
internal class Program
{
static void Main(string[] args)
{
Console.Write("请输入杨辉三角的行数(必须大于2):");
int yhsjHS = Convert.ToInt32(Console.ReadLine());//键盘输入数组行数,即y
int yhsjLS = (yhsjHS + 1) * 2;//计算数组长度,即x
int[,] yhsj = new int;//杨辉三角以数组角度看,第0行只有一个1,得从第一行开始算
for (int x = 1, y = yhsjHS; y >= 0; x++, y--)//杨辉三角左斜边都是1
{
yhsj = 1;
}
for (int x = yhsjLS - 1, y = yhsjHS; y > 0; x--, y--)//杨辉三角右斜边都是1
{
yhsj = 1;
}
for (int x = 3, y = yhsjHS; y > 1; x++, y--)//杨辉三角内部左侧自然数
{
yhsj = y;
}
for (int x = yhsjLS - 3, y = yhsjHS; y > 1; x--, y--)//杨辉三角内部右侧自然数
{
yhsj = y;
}
for (int y = 4; y <= yhsjHS; y++)//内部计算
{
for (int x = (yhsjHS - y + 4); x <= (yhsjHS + y); x++)
{
yhsj = yhsj + yhsj;
}
}
for (int y = 0; y <= yhsjHS; y++)//打印数组
{
for (int x = 0; x < yhsjLS; x++)
{
if (x == yhsjLS - 1)//换行判断
{
if (yhsj == 0)//如果数组值为空(数组值不赋值默认为0),则输出为空,否则输出数组值。下同
{
Console.WriteLine(" ");
}
else
{
Console.WriteLine(yhsj);
}
}
else
{
if (yhsj==0)
{
Console.Write(" ");
}
else
{
Console.Write(yhsj);
}
}
}
}
}
}
}
输出结果
学习资料的代码
Sub YangHuiSanJiao()
Dim height As Integer, width As Integer, Arr()
height = Val(InputBox("请输入三角有多高(层级):"))
If height = 0 Then Exit Sub
'计算数组维度
width = height * 2 - 1
ReDim Arr(1 To height, 1 To width)
'逐层处理
Dim centerCol, startCol, endCol
centerCol = height
Arr(1, centerCol) = 1
For i = 2 To UBound(Arr)
startCol = centerCol - (i - 1)
endCol = centerCol + (i - 1)
For j = startCol To endCol Step 2
If j > 1 Then Arr(i, j) = Val(Arr(i - 1, j - 1))
If j < width Then Arr(i, j) = Arr(i, j) + Val(Arr(i - 1, j + 1))
Next
Next
Cells.ClearContents
.Resize(height, width) = Arr
End Sub 膜拜一下。终于大功告成了,恭喜楼主!{:1_893:} 哈哈,这东西不是有更简单的方法吗? iawyxkdn8 发表于 2022-7-31 16:27
哈哈,这东西不是有更简单的方法吗?
我这说好听是根据规律研究算法,说难听就是打枪画靶。正在看资料中的代码。以后再回头看看吧 膜拜一下,在学习C#一直以为C#就是C语言。。 laomogu 发表于 2022-7-31 16:35
膜拜一下,在学习C#一直以为C#就是C语言。。
我也就找了下网络资料自己琢磨的。
而且C/C++/C#一般都有说明这几者的来历。有点不应该。 厉害,我什么时候能达到你这水平,达到你这水平,要看那些书? 初学者别研究这个了 太费神 研究了一下,如醍醐灌顶,一下就通了 Afang0417 发表于 2022-7-31 20:32
研究了一下,如醍醐灌顶,一下就通了
主要是靠算法,参考我截图的表格加上注释还是很容易搞懂的
页:
[1]
2