首页 新闻 会员 周边 捐助

请求算对数的算法

0
悬赏园豆:5 [已关闭问题]

我们有道题目,有以下几个数,10,82,43,23,89,12,43,84,23,32.要求算出这些数第一位或第二位的对数。例如:43和23的第二位相对(第一位要和第一位相对,第二位要和第二位相对)。请求算这样的对数的比较高校的算法。想了很多,总觉得比较笨。希望大家帮忙想想有什么比较高效点的办法。谢谢了

雪燃的主页 雪燃 | 初学一级 | 园豆:149
提问于:2009-06-10 20:26
< >
分享
其他回答(2)
0

普通的做法应该就是这样的吧?

                var s = new System.Text.StringBuilder();
                var l = new int[] { 10, 82, 43, 23, 89, 12, 43, 84, 23, 32 };
                for (int i = 0; i < l.Count(); i++)
                {
                    for (int j = i + 1; j < l.Count(); j++)
                    {
                        if (l[i] % 10 == l[j] % 10) s.AppendLine(string.Format("{0}和{1}个位相同"));
                        if (l[i] / 10 % 10 == l[j] / 10 % 10) s.AppendLine(string.Format("{0}和{1}十位相同"));
                    }
                }

也没想出什么高深的算法了,倒是感觉转换为字符串的话可能会更快一些:

                var s = new System.Text.StringBuilder();
                var l = new int[] { 10, 82, 43, 23, 89, 12, 43, 84, 23, 32 }.Cast<string>().ToList();
                for (int i = 0; i < l.Count(); i++)
                {
                    for (int j = i + 1; j < l.Count(); j++)
                    {
                        if (l[i][0] == l[j][0]) s.AppendLine(string.Format("{0}和{1}个位相同"));
                        if (l[i][1] == l[j][1]) s.AppendLine(string.Format("{0}和{1}十位相同"));
                    }
                }

计算机进行布尔运算的速度是最快的,要优于算术运算,只是不知道.Cast<string>().ToList()是否会消耗过多性能。

斯克迪亚 | 园豆:4124 (老鸟四级) | 2009-06-10 22:31
0

什么是对数?

| 园豆:770 (小虾三级) | 2009-06-10 22:41
0

LogE?

风海迷沙 | 园豆:4453 (老鸟四级) | 2009-06-11 11:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册