C语言实现纸牌游戏之小猫钓鱼算法

  

本文实例为大家分享了C语言实现小猫钓鱼算法的具体代码,供大家参考,具体内容如下

  

星期天小哼和小哈约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——”小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两人交替出牌,出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人手中的牌全部出完时,游戏结束,对手获胜。(用两个队列和一个栈完成)

  

代码如下:

        #定义_CRT_SECURE_NO_WARNINGS 1      # include & lt; stdio.h>   # include & lt; stdlib.h>/*   *游戏规则是这样的,将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放桌上,然后小哈也拿出手中的第一张扑克牌,并放在小哼刚打出的扑克牌的上面,就像这样两个人交替出牌,出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即可将两张相同的牌及中间的牌全部拿走,并依次放到自己手中的牌的末尾。当任意一个人手上的牌全部打完时,另一个人获胜   *郭文峰   * 2018/9/29   */struct队列   {   int数据[1000];   int头;   int尾巴;   };      struct堆栈   {   int[10]的数据;   int最高;   };      int主要(空白)   {   struct队列q1、q2;   堆栈结构;   int i=0;   int t=0;   int [10];//初始化队列   q1。头=1;   q1。尾=1;   q2。头=1;   q2。尾=1;//初始化栈   年代。顶级=0;      (我=0;我& lt;10;我+ +)   {   书[我]=0;   }//依次向队列插入6个数//给小哼6张牌   (i=1;我& lt;=6;我+ +)   {   scanf (“% d”, q1.data [q1.tail]);   q1.tail + +;   }//依次向队列插入6个数//给小哈6张牌   (i=1;我& lt;=6;我+ +)   {   scanf (“% d”, q2.data [q2.tail]);   q2.tail + +;   }//当队列不为空的时候执行循环   而(q1。头& lt;q1。尾巴,,q2。头& lt;q2.tail)   {   t=q1.data [q1.head];//小哼出一张牌//判断小哼打出的牌是否能赢   如果(书[t]==0)//表明桌上没有牌面为t的牌   {   q1.head + +;   s.top + +;   s.data [s。顶级]=t;   书[t]=1;   }   其他的   {   q1.head + +;   q1.data (q1。尾巴]=t;   q1.tail + +;   而(s.data[年代。上]!=t)   {   书[s.data [s。顶级]]=0;   q1.data (q1。尾巴]=s.data [s.top];   q1.tail + +;   s.top——;   }   }      t=q2.data [q2.head];//小哈出一张牌//判断小哈打出的牌是否能赢   如果(书[t]==0)//表明桌上没有牌面为t的牌   {   q2.head + +;   s.top + +;   s.data [s。顶级]=t;   书[t]=1;   }   其他的   {   q2.head + +;   q2.data (q2。尾巴]=t;   q2.tail + +;   而(s.data[年代。上]!=t)   {   书[s.data [s。顶级]]=0;   q2.data (q2。尾巴]=s.data [s.top];   q2.tail + +;   s.top——;      }      }   }      如果(q2。头==q2.tail)   {   printf("小哼赢得\ n”);   printf("小哼手上还剩的牌为:");   (我=q1.head;我& lt;=q1。尾巴- 1;我+ +)   {   printf (" % d”, q1.data[我]);   }      如果(s。最高的在0)   {   printf (" \ n桌上的牌是:”);   (i=1;我& lt;=s.top;我+ +)   {   printf (" % d”, s.data[我]);   }   }   其他的   {   printf("桌上没有牌了! \ n”);   }   }   其他的   {   printf("小哈赢得\ n”);   printf("小哈手上还剩的牌为:");   (我=q2.head;我& lt;=q2。尾巴- 1;我+ +)   {   printf (" % d”, q2.data[我]);   }      如果(s。最高的在0)   {   printf (" \ n桌上的牌是:”);   (i=1;我& lt;=s.top;我+ +)   {   printf (" % d”, s.data[我]);   }   }   其他的   {   printf("桌上没有牌了! \ n”);   }   }      系统(“暂停”);      返回0;   }      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

C语言实现纸牌游戏之小猫钓鱼算法