91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java如何實現紙牌游戲之小貓釣魚算法

發布時間:2020-07-30 14:50:48 來源:億速云 閱讀:274 作者:小豬 欄目:編程語言

這篇文章主要為大家展示了java如何實現紙牌游戲之小貓釣魚算法,內容簡而易懂,希望大家可以學習一下,學習完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

星期天小哼和小哈約在一起玩桌游,他們正在玩一個非常古怪的撲克游戲——“小貓釣魚”。游戲的規則是這樣的:將一副撲克牌平均分成兩份,每人拿一份。小哼先拿出手中的第一張撲克牌放在桌上,然后小哈也拿出手中的第一張撲克牌,并放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,并依次放到自己手中牌的末尾。當任意一人手中的牌全部出完時,游戲結束,對手獲勝。

假如游戲開始時,小哼手中有 6 張牌,順序為 2 4 1 2 5 6,小哈手中也有 6 張牌,順序為 3 1 3 5 6 4,最終誰會獲勝呢?現在你可以拿出紙牌來試一試。接下來請你寫一個程序來自動判斷誰將獲勝。這里我們做一個約定,小哼和小哈手中牌的牌面只有 1~9。 

輸入

2 4 1 2 5 6
3 1 3 5 6 4

輸出

小哼win
小哼當前手中的牌是 5 6 2 3 1 4 6 5 桌上的牌是 2 1 3 4

這道題目完全考察棧跟隊列的應用,桌面上的牌是棧,個人手中的牌是隊列。

附上JAVA實現的源碼:

import java.util.LinkedList;
import java.util.Scanner;
import java.util.Stack;
 
public class Main {
 public static void main(String[] args) {
 Scanner scanner = new Scanner(System.in);
 LinkedList<Integer> a = new LinkedList<Integer>();//A手中的牌
 LinkedList<Integer> b = new LinkedList<Integer>();//B手中的牌
 Stack<Integer> stack = new Stack<>();//記錄桌面上的牌
 int[] book = new int[10];//用來標記哪些牌已經在桌上
 int n,t,s;
 for(int i = 0; i < 10; i++){
 book[i] = 0;
 }
 System.out.println("輸入手中牌的個數");
 n = scanner.nextInt();
 System.out.println("輸入A君手中牌的大小");
 for(int i = 1; i<=n; i++){
 a.addLast(scanner.nextInt());
 }
 System.out.println("輸入B君手中牌的大小");
 for(int i = 1; i<=n; i++){
 b.addLast(scanner.nextInt());
 }
 System.out.println("輸入完畢開始游戲");
 while (!a.isEmpty() && !b.isEmpty()) {//當有人手中沒牌游戲結束
 t = a.removeFirst();
 if (book[t] == 0) {//A沒有贏
 stack.push(t);//桌面上加一張牌
 book[t] = 1;//記錄桌面上已經有這張牌了
 }else {//A贏了
 a.addLast(t);//將打出的牌到到末尾
 while (!stack.peek().equals(t)) {//將桌面上的牌按順序放到A的末尾
 s = stack.pop();
 a.addLast(s);
 book[s] = 0;
 }
 }
 
 //同上B取出牌
 t = b.removeFirst();
 if (book[t] == 0) {
 stack.push(t);
 book[t] = 1;
 } else {
 b.addLast(t);
 while (!stack.peek().equals(t)) {
 s = stack.pop();
 b.addLast(s);
 book[s]= 0;
 }
 }
 }
 
 if (!a.isEmpty()) {//A勝利
 System.out.println("A君勝利!A手中的牌是");
 while (!a.isEmpty()) {
 System.out.print(a.removeFirst()+ " ");
 }
 System.out.println();
 if (!stack.isEmpty()) {//桌面上有牌
 System.out.println("桌面上的牌是");
 for (Integer x : stack) { 
 System.out.print(x + " "); 
  } 
 } else {
 System.out.println("桌面沒有牌了");
 }
 } else {//B勝利
 System.out.println("B君勝利!B手中的牌是");
 while (!b.isEmpty()) {
 System.out.print(b.removeFirst()+ " ");
 }
 System.out.println();
 if (!stack.isEmpty()) {//桌面上有牌
 System.out.println("桌面上的牌是");
 for (Integer x : stack) { 
 System.out.print(x + " "); 
  } 
 } else {
 System.out.println("桌面沒有牌了");
 }
 }
 return;//結束
 }
}

結果:

輸入手中牌的個數
6
輸入A君手中牌的大小
2 4 1 2 5 6
輸入B君手中牌的大小
3 1 3 5 6 4
輸入完畢開始游戲
A君勝利!A手中的牌是
5 6 2 3 1 4 6 5
桌面上的牌是
2 1 3 4

以上就是關于java如何實現紙牌游戲之小貓釣魚算法的內容,如果你們有學習到知識或者技能,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吉安县| 定结县| 平泉县| 汉源县| 铁岭市| 内江市| 丽水市| 梨树县| 安康市| 恩施市| 阜南县| 丰原市| 姚安县| 天台县| 清新县| 出国| 闸北区| 彰化县| 阿尔山市| 康马县| 泾源县| 大安市| 连山| 东海县| 文化| 麟游县| 固镇县| 于都县| 含山县| 河曲县| 宽城| 阿瓦提县| 刚察县| 双柏县| 鄄城县| 灵璧县| 乾安县| 泾阳县| 巩义市| 报价| 三门县|