日期:2014-05-20  浏览次数:20752 次

【代码最简化】打印一个“回”字图形,看谁写的代码最少。
需求按顺序输出从1到9个环的“回”字图形,参见输出。这个输出是固定不变的,就看谁用最少的代码实现。

注:系统标识符和自定义标识符都只计为一个字符。即:“int”和“System.Int32”都只算一个字符。
可以引用任何一个.NET自带的程序库,但不允许使用第三方控件和程序库。建议使用VS2005和VS2008环境。

输出1
-------
222
212
222
-------
33333
32223
32123
32223
33333
-------
4444444
4333334
4322234
4321234
4322234
4333334
4444444
-------
555555555
544444445
543333345
543222345
543212345
543222345
543333345
544444445
555555555
-------
66666666666
65555555556
65444444456
65433333456
65432223456
65432123456
65432223456
65433333456
65444444456
65555555556
66666666666
-------
7777777777777
7666666666667
7655555555567
7654444444567
7654333334567
7654322234567
7654321234567
7654322234567
7654333334567
7654444444567
7655555555567
7666666666667
7777777777777
-------
888888888888888
877777777777778
876666666666678
876555555555678
876544444445678
876543333345678
876543222345678
876543212345678
876543222345678
876543333345678
876544444445678
876555555555678
876666666666678
877777777777778
888888888888888
-------
99999999999999999
98888888888888889
98777777777777789
98766666666666789
98765555555556789
98765444444456789
98765433333456789
98765432223456789
98765432123456789
98765432223456789
98765433333456789
98765444444456789
98765555555556789
98766666666666789
98777777777777789
98888888888888889
99999999999999999
-------


调试代码:
C# code
private void PrintBox()
{
     // TODO : 自由发挥
}

private void button1_Click(object sender, EventArgs e)
{
    PrintBox();  
}


------解决方案--------------------
先把数字放入数组然后打印数组。
只说说想法吧。
------解决方案--------------------
潜力贴先留名
------解决方案--------------------
其实应该比逻辑,而不是比谁的代码少。

C# code
class Program
{
    static Dictionary<string, int> buff;

    static void Main(string[] args)
    {
        do
        {
            Console.Write("输入一个整数...");
            int x = int.Parse(Console.ReadLine());
            buff = new Dictionary<string, int>();
            int y = think(x, 1);
            print(y);
        } while (true);
    }

    static void print(int 行数)
    {
        for (int i = 1; i <= 行数; i++)
        {
            for (int h = 1; h <= 行数; h++)
                Console.Write(buff[i.ToString() + "," + h.ToString()]);
            Console.WriteLine();
        }
    }

    static int think(int x, int 开始行)
    {
        if (x == 1)
        {
            buff.Add(开始行.ToString() + "," + 开始行.ToString(), 1);
            return 开始行;
        }
        else
        {
            int e = think(x - 1, 开始行 + 1);
            for (int i = 开始行; i <= e + 1; i++)
            {
                buff.Add(开始行.ToString() + "," + i.ToString(), x);
                buff.Add((e + 1).ToString() + "," + i.ToString(), x);
            }
            for (int i = 开始行 + 1; i <= e; i++)
            {
                buff.Add(i.ToString() + "," + 开始行.ToString(), x);
                buff.Add(i.ToString() + "," + (e + 1).ToString(), x);
            }
            return e + 1;
        }
    }
}

------解决方案--------------------
先顶下
学习