学习了一段时间的C#,做了个杨辉三角的题目来测试一下自己,没想到竟然做出来了。当年学习JAVA的时候没能把杨辉三角的题目很好的做出来,现在可以了,心中好不高兴。
也不知道有没有更好的实现办法,如果有的话,请知道的朋友告诉我吧。
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Generic;
using System.Text;
namespace yanghuisanjiao
{
class yanghui
{
static void Main(string[] args)
{
int i = 10;
yanghui yh = new yanghui();
yh.yanghuisanjiao(i);
Console.ReadLine();
}
{
class yanghui
{
static void Main(string[] args)
{
int i = 10;
yanghui yh = new yanghui();
yh.yanghuisanjiao(i);
Console.ReadLine();
}
void yanghuisanjiao(int i)
{
int[,] ArrayData = new int[i+1,2*i+1];
{
int[,] ArrayData = new int[i+1,2*i+1];
//设定数组元素全部为零
for (int j = 0; j <= i; j++)
{
for (int k = 0; k <= 2 * i; k++)
{
ArrayData[j, k] = 0;
}
}
for (int j = 0; j <= i; j++)
{
for (int k = 0; k <= 2 * i; k++)
{
ArrayData[j, k] = 0;
}
}
ArrayData[0,i] = 1;
ArrayData[i, 0] = 1;
ArrayData[i, 2 * i] = 1;
for (int j = 1; j <= i; j++)
{
for (int k = 0; 2*k-j < i; k++)
{
if(i-j+2*k-1>=0&&2*k+1-j<=i)
ArrayData[j, i - j + 2 * k] = ArrayData[j - 1, i - j + 2 * k - 1] + ArrayData[j - 1, i - j + 2 * k + 1];
}
}
ArrayData[i, 0] = 1;
ArrayData[i, 2 * i] = 1;
for (int j = 1; j <= i; j++)
{
for (int k = 0; 2*k-j < i; k++)
{
if(i-j+2*k-1>=0&&2*k+1-j<=i)
ArrayData[j, i - j + 2 * k] = ArrayData[j - 1, i - j + 2 * k - 1] + ArrayData[j - 1, i - j + 2 * k + 1];
}
}
for (int j = 0; j <= i; j++)
{
for (int k = 0; k <= 2 * i; k++)
{
if (ArrayData[j, k] == 0)
Console.Write(" ");
//else if (ArrayData[j, k] < 10)
// Console.Write(ArrayData[j, k] + " ");
else
Console.Write(ArrayData[j, k]);
}
Console.WriteLine();
}
}
}
}
{
for (int k = 0; k <= 2 * i; k++)
{
if (ArrayData[j, k] == 0)
Console.Write(" ");
//else if (ArrayData[j, k] < 10)
// Console.Write(ArrayData[j, k] + " ");
else
Console.Write(ArrayData[j, k]);
}
Console.WriteLine();
}
}
}
}
有一个地方是可以在修改一下的,就是对i的赋值,可以通过读取来做,不过很简单,自己也懒得做,就这样吧。
转载于:https://blog.51cto.com/wzcsying/53767