我的马的遍历代码[Teaks & xgluxv]

今天在园子首页上看到一篇 马的遍历 的文章 用来比较了一下c++和c#的代码运行速度的问题。本来这两种语言没有什么可比性,但后边看到文章里提到的出结果的时间 都超出了我的想像。因此用vc++2005和vc#2005分别写了一下相同的算法,各位网友可以把代码下载下去 自行运行比较一下。 源代码工程文件
我这里把算法代码列出一下 以c#版本为例:
 1 None.gif      struct  CSPoint
 2 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 3InBlock.gif        public int x;
 4InBlock.gif        public int y;
 5ExpandedBlockEnd.gif    }

 6 None.gif
 7 None.gif     class  othercsHorse
 8 ExpandedBlockStart.gifContractedBlock.gif     dot.gif {
 9ExpandedSubBlockStart.gifContractedSubBlock.gif        int[] DeltaX =dot.gif-2-11221-1-2 };
10ExpandedSubBlockStart.gifContractedSubBlock.gif        int[] DeltaY =dot.gif1221-1-2-2-1 };
11InBlock.gif        int[,] Game = new int[1212];
12InBlock.gif        CSPoint[] csPoint = new CSPoint[64];
13InBlock.gif        int step;
14InBlock.gif        int ResultCount;
15InBlock.gif
16InBlock.gif        public othercsHorse()
17ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
18InBlock.gif            for (int i = 0; i < 12; i++)
19ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
20InBlock.gif                Game[i, 0= -1;
21InBlock.gif                Game[i, 11= -1;
22InBlock.gif                Game[0, i] = -1;
23InBlock.gif                Game[11, i] = -1;
24InBlock.gif                Game[i, 1= -1;
25InBlock.gif                Game[i, 10= -1;
26InBlock.gif                Game[1, i] = -1;
27InBlock.gif                Game[10, i] = -1;
28ExpandedSubBlockEnd.gif            }

29InBlock.gif            step=0;
30InBlock.gif            csPoint[step].x=2;
31InBlock.gif            csPoint[step].y=2;
32InBlock.gif            Game[csPoint[step].x, csPoint[step].y] = 1;
33ExpandedSubBlockEnd.gif        }

34InBlock.gif
35InBlock.gif        public void OutputResult()
36ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
37InBlock.gif            ResultCount++;
38InBlock.gif            Console.WriteLine("Result:{0}", ResultCount);
39InBlock.gif            for (int i = 2; i < 10; i++)
40ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
41InBlock.gif                for (int j = 2; j < 10; j++)
42ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
43InBlock.gif                    Console.Write("{0}{1} ", (Game[i, j] < 10)?" ":"", Game[i, j].ToString());
44ExpandedSubBlockEnd.gif                }

45InBlock.gif
46InBlock.gif                Console.WriteLine();
47ExpandedSubBlockEnd.gif            }

48InBlock.gif            Console.WriteLine();
49ExpandedSubBlockEnd.gif        }

50InBlock.gif
51InBlock.gif        public void Start()
52ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
53InBlock.gif            int NextX, NextY;
54InBlock.gif            for (int i = 0; i < 8; i++)
55ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
56InBlock.gif                NextX = csPoint[step].x + DeltaX[i];
57InBlock.gif                NextY = csPoint[step].y + DeltaY[i];
58InBlock.gif                if (Game[NextX, NextY] == 0)
59ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
60InBlock.gif                    Game[NextX, NextY] = ++step + 1;
61InBlock.gif                    csPoint[step].x = NextX;
62InBlock.gif                    csPoint[step].y = NextY;
63InBlock.gif                    if (step == 63)
64ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
65InBlock.gif                        OutputResult();
66ExpandedSubBlockEnd.gif                    }

67InBlock.gif
68InBlock.gif                    Start();
69ExpandedSubBlockEnd.gif                }

70ExpandedSubBlockEnd.gif            }

71InBlock.gif
72InBlock.gif            Game[csPoint[step].x,csPoint[step].y] = 0;
73InBlock.gif            --step;
74ExpandedSubBlockEnd.gif        }

75InBlock.gif
76ExpandedBlockEnd.gif    }

77 None.gif

转载于:https://www.cnblogs.com/dotLive/archive/2006/03/09/346069.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值