小哈钓鱼纸牌游戏

in 编程
关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9

yuanzhen@yuanzhen-ThinkPad-X121e:~/C_script$ cat diaoyu.cpp 

#include <iostream>
#include <cstdlib>
#include <vector>

using std::cout;
using std::endl;
using std::vector;

struct queue
{
    int data[1000];
    int head;
    int tail;
};

struct stack
{
    int data[10];
    int top;
};

typedef struct queue Queue;
typedef struct stack Stack;

int book[10]={0};
Stack s;

Queue init_queue(int n, int a[])
{
    Queue q;
    q.head=0;
    q.tail=0;

    for(int i=0;i<n;++i)
    {
        //std::cin >> q.data[q.tail];
        q.data[q.tail]=a[i];
        q.tail++;
    }
    return q;
}

void show(Queue q, const char* qstr)
{
    int i=q.head;
    cout << "显示" << qstr << ":" ;
    while(i<q.tail)
    {
        cout << q.data[i] << "\t";
        i++;
    }
    cout << endl;
}

void show_desk()
{
    cout << "桌上牌为:"  ;
    for(int i=1;i<=s.top;i++)
    {
        cout << s.data[i] << "\t";
    }
    cout << endl;
}

Queue card_show(Queue q, const char* qstr)
{
    int flag=0;
    int t=q.data[q.head];
    cout << qstr << "\t" << t << endl;
    if(book[t]==1)
        flag=1;

    if(flag==0)
    {
        s.top++;
        s.data[s.top]=t;
        book[t]=1;
    }
    else
    {
        show_desk();
        cout << qstr << "WIN" << "\t";
        q.data[q.tail]=t;
        q.tail++;
        while(s.data[s.top]!=t)
        {
            q.data[q.tail]=s.data[s.top];
            book[s.data[s.top]]=0;
            q.tail++;
            s.top--;
        }
            q.data[q.tail]=s.data[s.top];
            book[s.data[s.top]]=0;
            q.tail++;
            s.top--;
        show(q, qstr);
    }
    q.head++;
    return q;
}


int main(void)
{
    Queue q1, q2;
    int a1[6]={2,4,1,2,5,6};
    int a2[6]={3,1,3,5,6,4};
    s.top=0;

    show_desk();
    cout << "初始化Q1:" << endl;
    q1=init_queue(6,a1);
    cout << "初始化Q2:" << endl;
    q2=init_queue(6,a2);
    cout << "显示Q1:" << endl;
    show(q1,"Q1");
    cout << "显示Q2:" << endl;
    show(q2, "Q2");

    while(q1.head<q1.tail && q2.head<q2.tail)
    {
        q1=card_show(q1, "Q1");
        //show(q1, "Q1");
        q2=card_show(q2, "Q2");
        //show(q2, "Q2");
    }
    
    if(q1.head==q1.tail)
    {
        cout << "最终赢家为Q2!!" << endl;
        show(q2, "Q2");
    }
    else
    {
        cout << "最终赢家为Q1!!" << endl;
        show(q2,"Q1");
    }

    show_desk();
}
 

关注公众号【好便宜】( ID:haopianyi222 ),领红包啦~
阿里云,国内最大的云服务商,注册就送数千元优惠券:https://t.cn/AiQe5A0g
腾讯云,良心云,价格优惠: https://t.cn/AieHwwKl
搬瓦工,CN2 GIA 优质线路,搭梯子、海外建站推荐: https://t.cn/AieHwfX9
扫一扫关注公众号添加购物返利助手,领红包
Comments are closed.

推荐使用阿里云服务器

超多优惠券

服务器最低一折,一年不到100!

朕已阅去看看