注册 登录
编程论坛 VC++/MFC

至今没人会的问题,求解决,急。

ai599040801 发布于 2013-03-19 15:52, 599 次点击
在一个一位数组中如何查找对子a[ ] ={1,2,2,8,8,8,4,4,2} ,其中三个8不算对子,三联的不算哈。
输出两个4,两个2,相邻的超过3个相同的数不算对子。求代码,急。。。
(类似于棋牌游戏中的对子,只有两张一样的算对子,超过两张的不算啊)。求C++代码!!
4 回复
#2
yuccn2013-03-19 19:30
至今没人会的问题,既然知道没有人会,那你还问?

坐等你做出来给给人类一个0特破~
#3
信箱有效2013-03-19 20:13
肯定没人会的。
#4
zqllsszhuqi2013-03-25 20:57
利用堆栈就能完成了啊。。。。
#5
shmilyflf2013-03-26 20:28
#include <iostream>

using namespace std;

int main()
{
    //int a[]={1,2,2,8,8,8,4,4,2,2};
    //int a[]={2,2};
    int a[]={2,2,8,8,8,8,8,4,4};
    int len=sizeof(a)/sizeof(a[0]);//求数组的长度
   
    for(int i=1;i<len-2;)//中间是数组长度-2,-2的原因是下面判断的时候要往前判断2个,不减会越界
    {
        if(a[i-1]!=a[i] && a[i]==a[i+1] && a[i+1]!=a[i+2])
        {
            cout<<a[i]<<"  "<<a[i+1]<<endl;
            i=i+2;//当两个谁对子时就跳过这两个
        }
        else
        {
            ++i;//否则判断下一个
        }
    }
    if(len>=3)//判断开始的两个和最后的两个
    {
        if(a[len-1]==a[len-2] && a[len-2]!=a[len-3])
            cout<<a[len-1]<<"  "<<a[len-2]<<endl;
        if(a[0]==a[1] && a[1]!=a[2])
            cout<<a[0]<<"  "<<a[1]<<endl;
    }
    if(2==len && a[len-1]==a[len-2])//当只有两个的情况
    {
        cout<<a[len-1]<<"  "<<a[len-2]<<endl;
    }
    return 0;
}
//输出的对子顺序可能不是数组中的顺序,这个不是什么大问题
1