大家好
我试图解决星号树问题
发现我的代码不能正常工作,可以改进。
这是预期的输出
输入:5

    *
  * * *
* * * * *
  * * *
    *

输入:4
* * * *
  * *
* * * *

这是我的密码
static void Main(string[] args)
        {
            Console.Write("input:");

            char input = Console.ReadKey().KeyChar;

            if (char.IsDigit(input))
            {
                int couter = (int)char.GetNumericValue(input);

                Console.WriteLine();

                if (couter % 2 != 0)
                {

                    for (int i = 1; i <= couter; i++)
                    {

                        for (int j = 3; j > i; j--)
                        {

                            Console.Write("  ");

                        }

                        for (int k = 1; k <= i; k++)
                        {

                            Console.Write(" *");

                        }

                        Console.WriteLine();
                    }

                    for (int i = couter - 1; i >= 3; i--)
                    {
                        for (int j = 1; j <= i; j++)
                        {

                            if (j <= couter - i)
                            {
                                Console.Write("  ");
                            }
                            else
                            {
                                Console.Write("* ");
                            }
                        }

                        Console.WriteLine();
                    }

                }
                else
                {

                    for (int i = couter; i > 3; i--)
                    {
                        for (int j = 1; j <= i; j++)
                        {
                            if (couter - i >= j)
                            {
                                Console.Write("  ");
                            }
                            else
                            {
                                Console.Write("* ");
                            }
                        }

                        Console.WriteLine();


                    }

                    for (int i = couter - 1; i <= couter; i++)
                    {
                        for (int j = 0; j < i; j++)
                        {
                            Console.Write("* ");
                        }

                        Console.WriteLine();
                    }
                }

            }
        }

你能帮我解决这个问题吗。
最近,我觉得我在算法和一些复杂的问题上很差有谁知道有用的链接或如何提高我的技能,请让我知道。
谢谢,

最佳答案

检查此页的输入5(菱形):http://www.dreamincode.net/forums/topic/126715-diamond-asterisk/
我已经把它翻译成C#-现在它显示的钻石大小是您在变量“rows”中设置的:

int rows = 5;
StringBuilder sb = new StringBuilder();
// top part
for (int i = 1; i <= rows; i++)
{
    for (int j = 1; j <= rows - i; j++)
        sb.Append(' ');
    for (int k = 1; k <= 2 * i - 1; k++)
        sb.Append('*');
    sb.AppendLine();
}
//bottom part
for (int n = rows - 1; n > 0; n--)
{
    for (int l = 1; l <= rows - n; l++)
        sb.Append(' ');
    for (int m = 1; m <= 2 * n - 1; m++)
        sb.Append('*');
    sb.AppendLine();
}
Console.Write(sb.ToString());

10-06 15:25