有21个数都在1到10中 ,每个数在数组中的数目不超过4个, 3个连续数 或者 3个一样的数算一组 ,例如 1 2 3 或者 2 2 2
。判断这个数组中的数是不是能分成7组 。
各位大牛们 给点思路吧。
顺便问一下  是不是要用递归啊。

解决方案 »

  1.   

    给分...UINT Check(BYTE bCard[], UINT uCount)
    {
        UINT uOkCount = 0;
        std::sort(bCard, bCard+uCount);
        for (UINT i=0; i<uCount; i++)
        {
            if (bCard[i] == bCard[i+1] && bCard[i+1] == bCard[i+2])
            {
                uOkCount++;
                i += 2;
                continue;
            }
            
            if (bCard[i]+1 == bCard[i+1] && bCard[i]+2 == bCard[i+2])
            {
                uOkCount++;
                i += 2;
            }
        }
        return uOkCount;
    }// 调用
    BYTE bCard[21] = {1,1,1, 2,2,2, 3,3,3, 4,4,4, 5,6,7, 7,7,7, 8,8,8};
    CString str;
    str.Format("%d", Check(bCard, 21));
        AfxMessageBox(str);
      

  2.   

    多谢  LaoWu_  结贴