日期:2014-05-17  浏览次数:20732 次

谁会用程序计算彩票开奖数据的遗漏,,,帮我写个算法吧!~~
本帖最后由 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()
}