谁会用程序计算彩票开奖数据的遗漏,,,帮我写个算法吧!~~
本帖最后由 Lcindep110 于 2013-01-28 11:51:09 编辑
总的是10列,,每列可能出现的数字是0-9,先拿一列来做举例,
0
2
2
3
4
7
9
就这一列来说 9的遗漏就是0期因为它刚开,7的遗漏就是从下往上数到最近开的一期,7的遗漏是1期,相同的4的遗漏就是从下往上数中间隔了7和9,所以4的遗漏就是2期,3也是,3的遗漏是3,2的遗漏是4
语文学不好,不懂的耐心点看,或者给我回复下,我在线等哈。
------解决方案-------------------- List<int> L_1 = new List<int> { 1, 2, 2, 5, 3, 7 };
List<int> Res = new List<int>();
for (int i = 0; i < 10; i++)
{
int Tempi = L_1.FindLastIndex(delegate(int s) { return s == i; });
if (Tempi >= 0)
Res.Add(L_1.Count - Tempi);
else
Res.Add(-1);
}
------解决方案-------------------- var ary = new List<int>() { 0, 2, 2, 3, 4, 7, 9 };
for (int i = 0; i < 10; i++)
Console.WriteLine(i + "遗漏:" + (ary.Count - (ary.IndexOf(i) == -1 ? 0 : ary.IndexOf(i)+1)));
------解决方案--------------------唉
0,1,2,3,4,6,7,8,9
====================================
1,0,0,0,0,0,0,0,0
0,0,
1,0,0,0,0,0,0
0,0,
1,0,0,0,0,0,0
0,0,0,
1,0,0,0,0,0
0,0,0,
1,0,0,0,0,0
0,0,0,0,0,0,
1,0,0
0,0,0,0,0,0,0,0,
1
看清楚了,其实你要的无非就是统计对应数上向下有多少个0
------解决方案--------------------当然也有偷懒的方式
就是
你所谓的遗漏位=期数差-(分组count)
var ary = new List<int>() { 0, 2, 2, 3, 4, 7, 9 };
for (int i = 0; i < arr.count(); i++)
{
var temp=ary.skip(i).take(ary.count());
var res=temp.count()-temp.where(c=>c==ary[i]).count()
}