關于三角形算法的實現
一個朋友出了道題, 要求輸出如下圖形:
1
2 2 2
3 3 3 3 3
4 4 4
5
說是最終可以用兩個循環完成, 自己也就試了試:
現將結果發布到下面:
一. 最原始的實現:
public void Test()
{
int N = 5;
for (int i = 1; i <= N; i++)
{
if (i < N / 2 + 1)
{
for (int j = i; j < N / 2 + 1; j++) Console.Write(" ");
for (int j = 1; j <= i * 2 - 1; j++) Console.Write(i.ToString().PadRight(3, ' '));
Console.WriteLine();
}
else
{
for (int j = N / 2 + 2; j <= i; j++) Console.Write(" ");
for (int j = i; j <= N * 2 - i; j++) Console.Write(i.ToString().PadRight(3, ' '));
Console.WriteLine();
}
}
}
二. 兩個循環的實現如下:
public void Test2()
{
int N = 21;
for (int i = 1; i <= N; i++)
{
for (int j = 1; j <= N; j++)
{
if (j + i <= N / 2 + 1 || j <= i - (N / 2 + 1)) Console.Write(string.Empty.PadRight(N.ToString().Length + 1, ' '));
else if ((j > N / 2 + 1 - i && j < N / 2 + 1 + i && i <= N / 2 + 1)
|| (j > i - (N / 2 + 1) && j < N / 2 + 1 + N - i + 1 && i > N / 2 + 1))
Console.Write(i.ToString().PadRight(N.ToString().Length + 1, ' '));
}
Console.WriteLine();
}
}
請求大家指正.
浙公網安備 33010602011771號