最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)紙牌游戲之小貓釣魚算法

 更新時(shí)間:2020年04月24日 16:32:00   作者:蝴蝶Maple  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)紙牌游戲之小貓釣魚算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

輸入

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

輸出

小哼win
小哼當(dāng)前手中的牌是 5 6 2 3 1 4 6 5 桌上的牌是 2 1 3 4

這道題目完全考察棧跟隊(duì)列的應(yīng)用,桌面上的牌是棧,個(gè)人手中的牌是隊(duì)列。

附上JAVA實(shí)現(xiàn)的源碼:

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];//用來標(biāo)記哪些牌已經(jīng)在桌上
 int n,t,s;
 for(int i = 0; i < 10; i++){
 book[i] = 0;
 }
 System.out.println("輸入手中牌的個(gè)數(shù)");
 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()) {//當(dāng)有人手中沒牌游戲結(jié)束
 t = a.removeFirst();
 if (book[t] == 0) {//A沒有贏
 stack.push(t);//桌面上加一張牌
 book[t] = 1;//記錄桌面上已經(jīng)有這張牌了
 }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;//結(jié)束
 }
}

結(jié)果:

輸入手中牌的個(gè)數(shù)
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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java經(jīng)典設(shè)計(jì)模式之責(zé)任鏈模式原理與用法詳解

    Java經(jīng)典設(shè)計(jì)模式之責(zé)任鏈模式原理與用法詳解

    這篇文章主要介紹了Java經(jīng)典設(shè)計(jì)模式之責(zé)任鏈模式,簡單說明了責(zé)任鏈模式的概念、原理,并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)責(zé)任鏈模式的具體用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-08-08
  • java對接支付寶支付項(xiàng)目的實(shí)戰(zhàn)記錄

    java對接支付寶支付項(xiàng)目的實(shí)戰(zhàn)記錄

    最近公司有一個(gè)需求是接入第三方支付(微信&支付寶),我接到了支付寶支付,所以下面這篇文章主要給大家介紹了關(guān)于java對接支付寶支付項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • k8s部署springboot實(shí)現(xiàn)前后端分離項(xiàng)目

    k8s部署springboot實(shí)現(xiàn)前后端分離項(xiàng)目

    本文主要介紹了k8s部署springboot實(shí)現(xiàn)前后端分離項(xiàng)目,主要包括配置文件、鏡像構(gòu)建和容器編排等方面,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • JDK的下載、安裝與部署圖文教程

    JDK的下載、安裝與部署圖文教程

    這篇文章主要為大家詳細(xì)介紹了JDK的下載、安裝與部署圖文教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Java日期工具類操作字符串Date和LocalDate互轉(zhuǎn)

    Java日期工具類操作字符串Date和LocalDate互轉(zhuǎn)

    這篇文章主要介紹了Java日期工具類操作字符串Date和LocalDate互轉(zhuǎn),文章首先通過需要先引入坐標(biāo)展開主題的相關(guān)內(nèi)容介紹,需要的朋友可以參一下
    2022-06-06
  • 詳解Spring Boot配置文件application.properties

    詳解Spring Boot配置文件application.properties

    在本文中我們給大家整理了關(guān)于Spring Boot 的配置文件 application.properties的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們參考學(xué)習(xí)下。
    2019-06-06
  • JAVA遍歷Map集合的幾種方法匯總

    JAVA遍歷Map集合的幾種方法匯總

    這篇文章主要給大家介紹了關(guān)于JAVA遍歷Map集合的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java中的字符編碼問題處理心得總結(jié)

    Java中的字符編碼問題處理心得總結(jié)

    Java中的String類默認(rèn)是Unicode編碼,大家平常所說的UTF-8就是使用最廣的一種unicode的實(shí)現(xiàn)方式,以下我們還是來看一下Java中的字符編碼問題處理心得總結(jié):
    2016-06-06
  • Java中小球碰撞并使用按鈕控制數(shù)量實(shí)例代碼

    Java中小球碰撞并使用按鈕控制數(shù)量實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Java中小球碰撞并使用按鈕控制數(shù)量的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Java實(shí)現(xiàn)對華北、華南、華東和華中四個(gè)區(qū)域的劃分

    Java實(shí)現(xiàn)對華北、華南、華東和華中四個(gè)區(qū)域的劃分

    在Java中,通過定義枚舉類、編寫主程序和進(jìn)行測試,本文詳細(xì)介紹了如何劃分華北、華南、華東和華中四個(gè)區(qū)域,首先定義枚舉類標(biāo)識區(qū)域,然后通過主程序接收用戶輸入并返回相應(yīng)區(qū)域,最后通過測試用例確保正確性,文章還介紹了甘特圖和餅狀圖的使用
    2024-09-09

最新評論

太保市| 东海县| 拜泉县| 都匀市| 高安市| 五华县| 美姑县| 洪江市| 会理县| 云浮市| 沽源县| 湄潭县| 海阳市| 固始县| 全州县| 安图县| 聂荣县| 闸北区| 阿克苏市| 镇宁| 开阳县| 肥东县| 赞皇县| 孟州市| 江口县| 延津县| 甘泉县| 昌江| 揭西县| 嘉义市| 武义县| 定日县| 嵩明县| 诸城市| 民乐县| 镇沅| 甘孜| 璧山县| 泉州市| 北安市| 龙胜|