首页 > 代码库 > 怎么从自己的手牌中寻找比另一副牌大的几连对

怎么从自己的手牌中寻找比另一副牌大的几连对

 //调试用的数组--自己的牌
    int[] array = new int[24]{//306
                  215,307,308,309,310,311,312,313,314,
          415,405,    407,    409,410,411,412,413,414,
          315,        207,208,
                  106,107,    109,
    };
    /*
       int[] array = new int[24]{  415,315,414,314,413,313,412,312,411,311,410,310,409,309
                        109,308,208,407,   307,207,   107,306,106,405
           };*/
    /*
    int[] array = new int[24]{  415,315,215,414,314,413,313,412,312,411,311,410,310,409,309
                         109,308,208,407,   307,207,   107,106,405
            };*/
    //调试用的数组--上家的牌
    int[] array_less = new int[12]{
        106,206,207,307,108,308,209,409,110,410,111,211
     };
    public int mxNum;
    public int FinNum;
    int k = 0;
    void Start(){
   //排序
    for (int i = 0; i < array.Length; i++)
            {
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[j] % 100 > array[i] % 100)
                    {
                        mxNum = array[j];
                        array[j] = array[i];
                        array[i] = mxNum;
                    }
                    if (array[j] % 100 == array[i] % 100)
                    {
                        if (array[j] > array[i])
                        {
                            FinNum = array[j];
                            array[j] = array[i];
                            array[i] = FinNum;
                        }
                    }
                }
              }
  /*  for (int i = 0; i < array.Length; i++)
    {
        print("---" + array[i]);
    }*/  

    List<int> list = new List<int>();
        
    //判断有几组对子
    k = array_less.Length / 2;
    print("k:>>>" + k);
    //对对子进行排序
    for (int i = 0; i < array_less.Length;i++ )
    {
        for (int j = i + 1; j < array_less.Length; j++)
        {
            if (array_less[j] % 100 > array_less[i] % 100)
            {
                mxNum = array_less[j];
                array_less[j] = array_less[i];
                array_less[i] = mxNum;
            }
            if (array_less[j] % 100 == array_less[i] % 100)
            {
                if (array_less[j] > array_less[i])
                {
                    FinNum = array_less[j];
                    array_less[j] = array_less[i];
                    array_less[i] = FinNum;
                }
             }
           }
         }

   /* for (int i = 0; i < array_less.Length; i++)
    {
        print(">>>>----" + array_less[i]);
    }*/

   /* list.Add(k);
    for (int i = 0; i<list.Count; i++)
    {
        print("---" + list[i]);
    }*/
    //记录上一个数和出现的次数   存入list
    int lastValue = http://www.mamicode.com/0;
    int lastNum = 0;
    for (int n = 0; n < array.Length-1; n++)
    {
        if (n == 0)
        {
            lastValue = http://www.mamicode.com/array[n];
            lastNum = 1;
        }
        else if (lastValue%100 == array[n]%100)
        {
            list.Add(lastValue);
            lastNum++;
            n++;
            lastValue = http://www.mamicode.com/array[n];
            continue;
            //print("else if n=" + n);
            //print("lastvalue="http://www.mamicode.com/+ lastValue);
            //print("lastnum=" + lastNum);
        }
        else
        {
            
            lastValue = http://www.mamicode.com/array[n];
            lastNum = 1;
            print("else=" + n);
        }
    }
        //遍历list并输出
    for (int i = 0; i < list.Count; i++)
    {
        print(">>>>---->>>>" + list[i]);
    }
        //比较是否存在对子并判断有几连队,是否大于上家
    int pairsNum = 0;
    for (int i = 0; i < list.Count-1; i++)
    {
        int a = list[i] % 100;
        int b = list[i+1] % 100+1;
        if (a == b)
        {
            pairsNum++;
            print("pairsNum=" + pairsNum);
        }else if(a != b){
            pairsNum = 0;
        }

        if (pairsNum >= k && (list[0]%100 - array_less[0]%100 > 0))
        {
            print("存在大于上家的牌!");
            break;
        }
        else
        {
            print("不存在大于上家的牌!");
        }
    }



  }

怎么从自己的手牌中寻找比另一副牌大的几连对