| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 739 人关注过本帖
标题:人比较多,求一问题的算法(或叫解决办法)
只看楼主 加入收藏
zituocn
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-30
收藏
 问题点数:0 回复次数:6 
人比较多,求一问题的算法(或叫解决办法)

最近在做一个双色球的彩票系统,里面有这样的一个问题,想了半天了,没结果

判断双色球复式中奖情况的算法:

复式的形式如:01,04,12,14,18,20,28,31|11,14,15 这种.
比如这一期的开奖号为:01,12,14,18,20,28|11

根据双色球的中奖规则(如图):

得出上面所写的复式号码中了多少个1 2 3 4 5 6 等奖.

搜索更多相关主题的帖子: 算法 办法 
2006-06-30 16:14
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
收藏
得分:0 
理解了半天,是不是|后面的那个数代表蓝球,而如果|后面没有,就代表蓝球不要啊?希望没错...
int []real=new int[6];//存放开奖的6个号
.....//给real赋值
int main=**;//开奖的蓝球的值
int[] ureal=new int[6];//一个人买的6个红球号码
int umain=**;//一个人买的蓝球号码
int redin=0;//红球中符合的个数
bool mainin=false;//蓝球是否中
int level;//中了什么奖
for(int x=0;x<real.Length;x++)
{
if(real[x]==ureal[x])//判断某一个球是否买中了
redin++;//买中了就加1
}
mainin=(main==umain);//如果蓝球买中了mainin就为true,否则为false

switch(redin)
{
case 6:
level=mainin?1:2;
break;

case 5:
level=mainin?3:4;
break;

case 4:
level=mainin?4:5;
break;

case 3:
level=mainin?5:-1;
break;

case 2:
level=mainin?6:-1;
break;

default:
level=mainin?6:-1;
}

完成

寻求挑战,追求完美 Oh,my god!
2006-07-01 10:23
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
收藏
得分:0 

可以改进一下,把switch的部分换掉
if(redin==6)
level=mainin?1:2;
if(redin>=4)
level=7-redin+(mainin?1:2);
else if(mainin)
{
if(redin==3)
level=5;
else level=6;
}
else level=-1;

这种运算量非常小,就算是成百万的数据量,也可以在合理的时间内完成(毕竟只会有几亿次运算而已嘛~)


寻求挑战,追求完美 Oh,my god!
2006-07-01 10:37
houyunqing
Rank: 1
等 级:新手上路
帖 子:476
专家分:0
注 册:2005-4-1
收藏
得分:0 
还有建议:把real那个数组设置为static,把ureal的new运算提出来,每次换数据的时候,只对ureal的六个元素进行修改,而不重新建立一个数组,这样也能节省时间和资源

寻求挑战,追求完美 Oh,my god!
2006-07-01 10:46
foproxs
Rank: 1
等 级:新手上路
帖 子:132
专家分:0
注 册:2006-4-24
收藏
得分:0 
我不懂双色球的~~~~

2006-07-02 03:38
zituocn
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-30
收藏
得分:0 
int umain=**;//一个人买的蓝球号码
这儿可能有些问题,因为买的是双色球的复式,有可能是多个蓝球,本来双色球是6+1这种情况,复式的话,可能是N+N
,比如我上面所写的问题中的复式就是8+3.


另外,因为是复式的特殊性,中奖结果可能是多个,比如上面的这个8+3的复式有可能中:1个1等奖,2个2等奖,n个n等奖.
这样。
正因为复式的情况,才使这个问题成为了一个比较复杂的问题。
2006-07-03 15:26
zituocn
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-6-30
收藏
得分:0 
另外
if(real[x]==ureal[x])

判断双色球是否中奖,是不需要对位置的,
2006-07-03 15:28
快速回复:人比较多,求一问题的算法(或叫解决办法)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024435 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved