普通的做法应该就是这样的吧?
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()是否会消耗过多性能。
什么是对数?
LogE?