回 帖 发 新 帖 刷新版面

主题:[讨论]牛牛算法问题

不知道大家有没有玩过牛牛牌。我也是刚知道,不太熟悉。

有人熟悉它的算法吗? 请大家指教!

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个回复)

沙发

你想让我干什么?

板凳

有没有人能写出这个程序的算法啊?写一个函数,返回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 楼

有没有人能帮忙的?

4 楼

正负司令是什么来的?我只听说过大小鬼。司令不是在军棋里的东东吗?而且就是军棋里也没分正负的

5 楼

司令就是大小鬼,一个地方一个叫法!

6 楼

貌似QQ游戏有这个游戏。可以找他们的开发商。(说笑)

7 楼

晕~
直接枚举后两个数,前3数等于总和减去后两个数。在判断啊~~~~~~~~~~~~

8 楼

询问:如果一副牌有几个牛牛那咋办?是输出最大的还是一起输?

9 楼

我已经发到你邮箱了。。。。请查收!@#¥%……&*()

我来回复

您尚未登录,请登录后再回复。点此登录或注册