主题:[讨论]牛牛算法问题
evilroad
[专家分:0] 发布于 2009-08-12 13:10:00
不知道大家有没有玩过牛牛牌。我也是刚知道,不太熟悉。
有人熟悉它的算法吗? 请大家指教!
1.牌面分数:10、J、Q、K、正负司令都为10,其他按牌面数字计算。
2.任意3张牌之和为10的整数倍数,如果另外2张牌之和也为10的整数倍数,即为牛牛。例如(7,8,5,K,10)
3.任意3张牌之和为10的整数倍数,如果另外2张牌之和不为10的整数倍数,则根据这2张牌之和的个数为该副牌的分数。例如(4,6,Q,9,9)分数为8
4.任意3张牌之和都不能为10的整数倍数,则判定该副牌无分数。例如(7,8,A,4。J)
5.分数大的玩家获胜,例如A玩家是9分,B玩家是5分,C玩家是牛牛,D玩家是没分
回复列表 (共9个回复)
沙发
tzhlryy [专家分:270] 发布于 2009-08-12 18:05:00
你想让我干什么?
板凳
evilroad [专家分:0] 发布于 2009-08-12 22:47:00
有没有人能写出这个程序的算法啊?写一个函数,返回2个布尔类型,第一个返回给出的5个数字是否为牛牛,第二个返回5个数字是牛几,以下程序好像有问题,调试不能成功,希望大家改进!
procedure testNN(targetcards: array of integer);
var
tmp1: Boolean;
tmp2: Boolean;
a, b, c: integer;
tmp3: integer;
j: integer;
begin
tmp1 := false;
tmp2 := false;
for a := 0 to 2 do
begin
for b := a + 1 to 3 do
begin
for c := b + 1 to 4 do
begin
if ((targetcards[a] + targetcards[b] + targetcards[c]) div 10 = 0) then
begin
tmp1 := true; //返回是否是牛牛
tmp3 := 0;
for j := 0 to 4 do
begin
if (j <> a) and (j <> b) and (j <> c) then
tmp3 := tmp3 + targetcards[j];
end;
if tmp3 div 10 = 0 then
tmp2 := true; //返回牛几
end;
end;
end;
end;
end;
3 楼
evilroad [专家分:0] 发布于 2009-08-15 15:35:00
有没有人能帮忙的?
4 楼
angwuy [专家分:2280] 发布于 2009-08-15 16:38:00
正负司令是什么来的?我只听说过大小鬼。司令不是在军棋里的东东吗?而且就是军棋里也没分正负的
5 楼
evilroad [专家分:0] 发布于 2009-08-16 07:01:00
司令就是大小鬼,一个地方一个叫法!
6 楼
万里长城 [专家分:340] 发布于 2009-08-16 19:36:00
貌似QQ游戏有这个游戏。可以找他们的开发商。(说笑)
7 楼
abcwuhang [专家分:1840] 发布于 2009-08-20 16:50:00
晕~
直接枚举后两个数,前3数等于总和减去后两个数。在判断啊~~~~~~~~~~~~
8 楼
abcwuhang [专家分:1840] 发布于 2009-08-21 21:51:00
询问:如果一副牌有几个牛牛那咋办?是输出最大的还是一起输?
9 楼
abcwuhang [专家分:1840] 发布于 2009-08-21 22:18:00
我已经发到你邮箱了。。。。请查收!@#¥%……&*()
我来回复