TO jennyvenus(jennyvenus):
我解释一下:足球彩票是猜13场比赛的结果,每场比赛分别以3、1、0表示主队的胜、平、负。猜中全部13场中一等奖,猜中12场中二等奖。
投票可以采用单式投注和复式投注,单式投注,每一注都是像下面这种形式:
3-0-3-1-1-1-1-1-1-1-1-1-1复式投注表示为这种形式:
31-10-30-310-1-1-1-1-1-1-1-1-1。
以假设你的复式投注为上一行的数据,则表示13场比赛的第一场包下3和1这两种结果,也就是说比赛结果为3或1,都落在你的投注范围之内,你的复式都算猜中了这一场。第四场310表示胜平负结果全包,也就是说无论第四场赛果如何,你都肯定猜中。我想你应该明白了,以上复式其实就是对应一个2*2*2*3=24注的组合:
3-1-3-3-1-1-1-1-1-1-1-1-1
3-1-3-1-1-1-1-1-1-1-1-1-1
3-1-3-0-1-1-1-1-1-1-1-1-1
3-1-0-3-1-1-1-1-1-1-1-1-1
3-1-0-1-1-1-1-1-1-1-1-1-1
3-1-0-0-1-1-1-1-1-1-1-1-1
3-0-3-3-1-1-1-1-1-1-1-1-1
3-0-3-1-1-1-1-1-1-1-1-1-1
3-0-3-0-1-1-1-1-1-1-1-1-1
3-0-0-3-1-1-1-1-1-1-1-1-1
3-0-0-1-1-1-1-1-1-1-1-1-1
3-0-0-0-1-1-1-1-1-1-1-1-1
1-1-3-3-1-1-1-1-1-1-1-1-1
1-1-3-1-1-1-1-1-1-1-1-1-1
1-1-3-0-1-1-1-1-1-1-1-1-1
1-1-0-3-1-1-1-1-1-1-1-1-1
1-1-0-1-1-1-1-1-1-1-1-1-1
1-1-0-0-1-1-1-1-1-1-1-1-1
1-0-3-3-1-1-1-1-1-1-1-1-1
1-0-3-1-1-1-1-1-1-1-1-1-1
1-0-3-0-1-1-1-1-1-1-1-1-1
1-0-0-3-1-1-1-1-1-1-1-1-1
1-0-0-1-1-1-1-1-1-1-1-1-1
1-0-0-0-1-1-1-1-1-1-1-1-1
若赛果为:3-0-1-1-1-1-1-3-1-1-1-1-1,则以上复式错了第3场和第8场。我问题中的复式31-10-30-310-31-310-3-10-0-31-30-1-1,分解为单式共有
2*2*2*3*2*3*1*2*1*2*2*1*1=1152注
题目中某君的复式投注:31-310-10-31-310-31-30-310-10-31-310-10-31,共有2^9*3^4=41472注。由于假设某君的复式只能猜对9场至11场,也就是说这41472注中至少有一注(其实有很多注)猜中了9场或9场以上,并且任何一注都不可能猜中12场或以上,最多只能猜中11场。分析:一等奖要求13场全猜中,13-11=2,13场全猜中的那一注与猜中11场的一注相比较其中有两场不同,13场全猜中的那一注与猜中10场的一注相比较其中有三场不同,13场全猜中的那一注与猜中9场的一注相比较其中有四场不同...。根据以上规律,在你的复式对应1152注中,凡是与某君的41472注中的任何一注相比较,不同的场数小于2的都不可能中一等奖,应该去掉不要。想想也是,与猜中11场的单注有一场不同单注的,要么是猜中11-1=10场,要么是猜中11+1=12场,总之没有可能中一等奖。类似的,假设某君的复式猜对9场以上,在你的复式对应1152注中,若有这样一注,它与某君的41472注中的任何一注相比较都最多只有8场相同,那么这一注也是徒劳的,应该删除。理由很简单,13场全猜对的单注与猜对9场的单注应该是有9场相同的。

解决方案 »

  1.   

    值得学习!顺便问一下:http://www.csdn.net/expert/topic/999/1000000.xml?temp=.7218744
      

  2.   

    某君当然不是我,我没那么多钱。这个问题我已经自己解决了。其实相当简单,是我自己钻了死胡同。之所以会钻死胡同,是因为受我以前写的一个比较某复式和一散注集合的比较的模块的影响。我没有考虑到这一次写的模块与以前的不同:因为用于参照的大复式31-310-10-31-310-31-30-310-10-31-310-10-31是一个完整的全组合,只需要将复式1中的每一单注的各场结果与大复式字符串31-310-10-31-310-31-30-310-10-31-310-10-31的各场结果比较,统计每个单注的各场落在大复式范围内的场数,将匹配场数大于等于11的和小于等于9的删除即可。即将原来的1152*41472比较改为1152*1的比较,由于比较次数差了数万倍,时间当然大大减小了。我做了个测试,以上述数据作测试,包括生成全部组合到用RichTextBox控件显示出来,只需要0.015秒。由于所用时间已经很少,进一步优化已无必要。不管怎样,都要谢谢大家对这个帖子的回复。 以上回复的每个朋友我都会酌情给分。我还有个问题想问,明天再说吧。