精华内容
下载资源
问答
  • [例题] 电动扑克比大小问题

    千次阅读 2008-01-13 04:00:00
    原题目:我想仿制一个像游戏机室里的扑克牌机一样游戏 游戏时每次5张牌,(共有54张牌)有两张王,大王和小王可以当作52张牌中任意的一张牌,这五张牌的中奖方式和大小顺序如下: 五个相同的(比如:五个A) 同花顺(比如:A....

     

    原题目:

    我想仿制一个像游戏机室里的扑克牌机一样游戏
    游戏时每次发5张牌,(共有54张牌)有两张王,大王和小王可以当作52张牌中任意的一张牌,这五张牌的中奖方式和大小顺序如下:
    五个相同的(比如:五个A)
    同花顺(比如:A.K.Q.J.10,五张牌的花色是一样的)
    四个相同的,带一张其他的牌(比如:四个A带一个2)
    三个相同的,带一对其他的牌(比如:三个A带一对2)
    同花(比如:五张牌的花色都是一样的)
    顺子(比如:A.K.Q.J.10,五张牌的花色是不相同的)
    三个相同的,带两张其他的牌(比如:三个A带   2   .3)
    两对相同的带一张其他的牌(比如:一对A和一对K带一张2)
    一对相同的带四张其他的牌(比如:一对A和3,4,5,6) 

    =============cike   例题==========
    例题名字:牌
    窗体2个     form1   form2
    form1   包括   1个text   3个list   3个command
    form2   包括   1个command   1个label   1个list
    例题执行步骤:把各控件放入各自窗体内   复制各自窗体代码   运行既可
    ================================
    form1   代码:

    VBScript code
    Private Sub Command1_Click() Call 发牌 End Sub Private Sub Command2_Click() Call 王的分配 '先把王变成可分辨的牌 List2.Clear '用这个存储花色 List3.Clear '用这个存储牌码 把花色和牌码分开处理比较方便后来的判断 a = Split(Text1.Text, ",") '分割成5 段 ' 下面这个的判断认识吧!若5个相等则 一等奖 If a(1) = a(2) And a(2) = a(3) And a(3) = a(4) And a(4) = a(0) Then MsgBox "抽取的5张牌相等 恭喜您中了一等奖": Exit Sub For i = 0 To 4 '这个循环的作用是把5张牌的花色和号码区分出来 List2.AddItem Left(a(i), 2) List3.AddItem Right(a(i), Len(a(i)) - 2) If List3.List(i) = "J" Then List3.List(i) = "11" '把J 他们全部还原成数字 If List3.List(i) = "Q" Then List3.List(i) = "12" If List3.List(i) = "K" Then List3.List(i) = "13" If List3.List(i) = "A" Then List3.List(i) = "14" '注意A 要当14 处理 因为它最大 Next i ReDim 花色次数(4) As Integer '用这个打算记录同样的花色出现的次数 ReDim 牌号次数(4) As Integer '用这个打算记录同样牌出现的次数 For i = 0 To 4 '这个循环获得它们各自出现的次数 也许有点复杂请仔细研究 For j = 4 To i Step -1 If List2.List(i) = List2.List(j) Then 花色次数(i) = 花色次数(i) + 1 If List3.List(i) = List3.List(j) Then 牌号次数(i) = 牌号次数(i) + 1 Next j Next i Dim b As String '用来存储出现的次数 用字符辨别比较方便 Dim c As String b = "" '给初值 c = "" For i = 0 To 4 '数组元素化为字串 If 花色次数(i) <> 1 Then b = b & 花色次数(i) End If If 牌号次数(i) <> 1 Then '数组元素化为字串 c = c & 牌号次数(i) End If Next i Dim min As Integer '用来记录5张牌中最小的数 Dim max As Integer '用来记录5张牌中最大的数 min = List3.List(0) ' 下面是具体获得他们的方法 max = List3.List(0) For i = 1 To 4 If max < List3.List(i) Then max = List3.List(i) Else max = max End If If min > List3.List(i) Then min = List3.List(i) Else min = min End If Next i '有了花色的出现的次数 最大 最小值 等信息后就可以判断出所有的条件了 '应该从高往下一个一个判断 记得有返回就要退出了 别让它还继续做下面奖项的判断 '最后一句代码的作用是 提示都没中奖 因为若中奖了已经退出该过程了! If InStr(b, "5") > 0 And c = "" And max - min = 4 Then MsgBox "同花顺,小子行啊,二等奖": Exit Sub If InStr(c, "4") > 0 Then MsgBox "有4张相同,恭喜您中了三等奖": Exit Sub If InStr(c, "3") > 0 And InStr(c, "2") > 0 Then MsgBox "有一对+三条 恭喜您中了四等奖": Exit Sub If InStr(b, "5") > 0 Then MsgBox "5个花色一样 恭喜您获得五等奖": Exit Sub If c = "" And max - min = 4 Then MsgBox "顺子 恭喜您获得六等奖": Exit Sub If InStr(c, "3") > 0 Then MsgBox "有个三条 恭喜您获得七等奖": Exit Sub If c = "22" Then MsgBox "有2对 恭喜您获得八等奖": Exit Sub If InStr(c, "2") > 0 Then MsgBox "有一对 恭喜您获得九等奖": Exit Sub MsgBox "sorry 没有中奖 请再接再厉 " End Sub Private Sub Command3_Click() Call 洗牌 End Sub Private Sub Form_Load() ' 载入的一些设置 Command3.Caption = "洗牌" Command1.Caption = "发牌" Command2.Caption = "中奖情况" Call 洗牌 End Sub Private Sub 洗牌() '这个过程是重新把54张牌写到list中 List1.Clear Text1 = "" For i = 1 To 13 For j = 1 To 4 If i = 1 Then a = "A" ElseIf i = "11" Then a = "J" ElseIf i = "12" Then a = "Q" ElseIf i = 13 Then a = "K" Else a = i End If If j = 1 Then b = "铁头" If j = 2 Then b = "红心" If j = 3 Then b = "梅花" If j = 4 Then b = "方块" List1.AddItem b & a Next j Next i List1.AddItem "大王" List1.AddItem "小王" End Sub Private Sub 发牌() '这个过程负责把牌发到 text中 [随机的] 当然同时减掉list中的牌 If List1.ListCount < 9 Then MsgBox "牌不够发了:需要重新洗牌": Exit Sub Text1 = "" Randomize For i = 1 To 5 a = Int(Rnd * List1.ListCount) Text1.Text = Text1.Text & List1.List(a) & "," List1.RemoveItem a Next i End Sub Private Sub 王的分配() '这个过程处理当遇到王时 如何替换要替换的牌 我用了另一个窗体来处理这个 If InStr(Text1, "大王") > 0 Or InStr(Text1, "小王") > 0 Then Form2.Show 1 End If End Sub

     

    下面是form2   的代码:

    VBScript code
    Private Sub Command1_Click() If List1.ListIndex <> -1 Then '如果选中状态 就执行 Form1.Text1 = Replace(Form1.Text1, "大王", List1.List(List1.ListIndex)) '替换函数替换掉 Form1.Text1 = Replace(Form1.Text1, "小王", List1.List(List1.ListIndex)) Me.Hide End If End Sub Private Sub Form_Load() Command1.Caption = "确定" Label1.Caption = "请选择要变换的牌" List1.Clear Text1 = "" For i = 1 To 13 '这里把牌写到list 不用装入王了 For j = 1 To 4 If i = 1 Then a = "A" ElseIf i = "11" Then a = "J" ElseIf i = "12" Then a = "Q" ElseIf i = 13 Then a = "K" Else a = i End If If j = 1 Then b = "铁头" If j = 2 Then b = "红心" If j = 3 Then b = "梅花" If j = 4 Then b = "方块" List1.AddItem b & a Next j Next i End Sub




     

    展开全文
  • Java扑克小程序

    千次阅读 2017-04-09 20:27:56
    慕课网第季作业要求 1. 创建一副扑克牌,包括2-10,... 牌,从第一张开始,按照一人一张的方式,每人张牌。 5. 牌,两人分别拿出手中最大牌比较,点数大者赢,若点数相同,则比较花色。设计思路: 创建C

    慕课网第三季作业

    要求
    1. 创建一副扑克牌,包括2-10,J,Q,K,A,黑桃,红桃,梅花,方片,不包括大小王。
    2. 创建两名玩家,有name属性。
    3. 洗牌,利用Collections.shuffle方法打乱顺序。
    4. 发牌,从第一张开始,按照一人一张的方式,每人发两张牌。
    5. 比牌,两人分别拿出手中最大牌比较,点数大者赢,若点数相同,则比较花色。

    设计思路:
    创建Cards类,Play类,Game类,Test类。
    其中Game类中的Compare(Caed x,Card y)方法用来比较两张牌的大小

    运行结果:
    这里写图片描述

    Cards类

    package crad;
    
    public class Cards {
        /**
         * 卡牌类
         */
        private String color;//花色
        private String number;//数字
    
        public Cards(String color,String number){
            this.color = color;
            this.number = number;
        }
    
        public String getColor() {
            return color;
        }
        public void setColor(String color) {
            this.color = color;
        }
        public String getNumber() {
            return number;
        }
        public void setNumber(String number) {
            this.number = number;
        }
        @Override
        public String toString() {
            return getColor()+getNumber();
        }
    
    
    
    }
    

    Play类

    package crad;
    
    public class Play {
        /**
         * 玩家类
         */
        private Integer id;//玩家ID
        private String name;//玩家姓名
    
        public Play(Integer id,String name){
            this.id = id;
            this.name = name;
        }
    
        public Integer getId() {
            return id;
        }
        public void setId(Integer id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    

    Game类

    package crad;
    /**
     * 游戏主程序
     */
    
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Random;
    import java.util.Scanner;
    
    //创建牌       CreateCards()
    //创建玩家  CreatePlays()
    //洗牌    ChangeCards()
    //发牌    SendCards()
    //判断输赢  GameKo()
    
    public class Game {
        Scanner input = new Scanner(System.in);
    
    
        List<Cards> CardsList = new ArrayList<Cards>();
        List<Play> PlayList = new ArrayList<Play>();
        List<Cards> nowCardsList = new ArrayList<Cards>();  
    
        String[] color =new String[] {"黑桃","红桃","梅花","方片"};
        String[] number = new String[] {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
    
        public void CreatePlays(){
    
            System.out.println("说明:本游戏为2人游戏,双方玩家各发2张牌,取出最大的一张牌与对手比较,点数大者赢,若点数相同,按'黑,红,梅,方'比较大小");
            for(int i=0;i<2;i++){
                System.out.println("请输入玩家"+(i+1)+"的姓名");
                PlayList.add(new Play(i, input.next()));
            }
        }
    
        public void CreateCards(){
            System.out.println("正在创建扑克牌......");
    
            for(int i=0;i<4;i++){
                for(int j=0;j<13;j++){
                    CardsList.add(new Cards(color[i], number[j]));
    
                }
            }
            System.out.println("扑克牌有:"+CardsList.toString());
            System.out.println("创建完成!");
        }
    
        public void ChangeCards(){
            System.out.println("开始洗牌......");
            Random rm = new Random();
            int x = rm.nextInt(10);
            for(int i=0;i<x;i++){
                System.out.println("第"+(i+1)+"次洗牌");
                //System.out.println("打乱前:"+CardsList.toString());
                Collections.shuffle(CardsList);
                //System.out.println("打乱后:"+CardsList.toString());
            }
            System.out.println("洗牌结束!");
    
        }
    
        public void SendCards(){
            System.out.println("开始发牌......");
            for(int i=0;i<4;i++){
                //nowCardsList.add(new Cards(color[i], number[i]));
                nowCardsList.add(CardsList.get(i));
                System.out.println("玩家"+PlayList.get(i%2).getName()+"拿牌"+nowCardsList.get(i).toString());
            }
            System.out.println("发牌结束!");
        }
    
        public int Comparison(Cards x,Cards y){
            int Comparison1=0,Comparison2=0;//比较数字
            int Comparison3=0,Comparison4=0;//比较花色
    
            //玩家的手牌1
            for(int i=0;i<13;i++){
                if(x.getNumber().equals(number[i])){
                    Comparison1 = i;
                }
    
            }
            for(int i=0;i<4;i++){
                if(x.getColor().equals(color[i])){
                    Comparison3 = i;
                }
            }
            //玩家的手牌2
            for(int i=0;i<13;i++){
                if(y.getNumber().equals(number[i])){
                    Comparison2 = i;
                }
    
            }
            for(int i=0;i<4;i++){
                if(y.getColor().equals(color[i])){
                    Comparison4 = i;
                }
            }
    
            //选出玩家2张牌中较大的一张
            if(Comparison1<Comparison2){
                return 2;
            }else if(Comparison1>Comparison2){
                return 1; 
            }else if(Comparison3<Comparison4){
                return 2;
            }else{
                return 1;
            }
    
    
        }
    
        public void GameKo(){
            List<Cards> maxCard = new ArrayList<Cards>();
            int last1=0,last2=0,last3=0;
            //玩家1最大手牌
            last1 = Comparison(nowCardsList.get(0), nowCardsList.get(2));
            if(last1==1){
                maxCard.add(nowCardsList.get(0));
            }else if(last1==2){
                maxCard.add(nowCardsList.get(2));
            }
            System.out.println("玩家"+PlayList.get(0).getName()+"的最大手牌是"+maxCard.get(0).toString());
            //玩家2最大手牌
            last2 = Comparison(nowCardsList.get(1), nowCardsList.get(3));
            if(last2==1){
                maxCard.add(nowCardsList.get(1));
            }else if(last2==2){
                maxCard.add(nowCardsList.get(3));
            }
            System.out.println("玩家"+PlayList.get(1).getName()+"的最大手牌是"+maxCard.get(1).toString());
            //双方比较
            last3 = Comparison(maxCard.get(0), maxCard.get(1));
            if(last3==1){
                System.out.println("玩家"+PlayList.get(0).getName()+"获胜。");
            }else if(last3==2){
                System.out.println("玩家"+PlayList.get(1).getName()+"获胜。");
            }
        }
    
    }
    

    Test类

    package crad;
    
    public class test {
        public static void main(String[] args) {
            Game gm  =new Game();
            gm.CreatePlays();
            gm.CreateCards();
            gm.ChangeCards();
            gm.SendCards();
            gm.GameKo();
        }
    }
    
    展开全文
  • java实现--简易扑克游戏

    千次阅读 2016-08-29 20:17:23
    季听课后的综合实战...4.发牌,将洗之后的扑克集合,从第一开始,发给两名玩家,按照一人一张的方式,每人 5.开始游戏,比大小,大小相同比花色(黑红梅方)实现代码如下:扑克类public class Poker {

    第三季听课后的综合实战,要求如下:
    1.创建一副扑克牌,不考虑大小王
    2.创建两名玩家,玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合
    3.洗牌,将之前创建的扑克牌顺序打乱
    4.发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张
    5.开始游戏,比大小,大小相同比花色(黑红梅方)

    实现代码如下:

    扑克类

    public class Poker {
        public Integer color;
        public Integer number;
        public Integer dengji;//等级属性,用于之后的比较大小
    
        public Poker(int color,int number){
            this.color = color;
            this.number = number;
            this.dengji = color + number;
        }
    
        @Override
        public String toString() {
            String colorString = "";
            String numberString = "";
            switch(color){
            case 0 : colorString = "方片";break;
            case 13 : colorString = "梅花";break;
            case 26 : colorString = "红桃";break;
            case 39 : colorString = "黑桃";break;
            }
            switch(number){
            case 11 : numberString = "J";break;
            case 12 : numberString = "Q";break;
            case 13 : numberString = "K";break;
            case 14 : numberString = "A";break;
            default :numberString = String.valueOf(number);break;
            }
            return colorString + numberString    ;
        }
    }

    玩家类

    public class Player {
        public Integer id;
        public String name;
        public List<Poker> playerlist;
    
        public Player(Integer id,String name){
            this.id = id;
            this.name = name;
            this.playerlist = new ArrayList<Poker>();
        }
    }

    游戏具体实现

    public class PokerList {
        public List<Poker> pokerlist;
        private Scanner console;
        private Player player1;
        private Player player2;
    
        public PokerList(){
            this.pokerlist = new ArrayList<Poker>(52);
            this.console = new Scanner(System.in);
        }
    
        //创建一副扑克牌
        public void newPoker(){
            for(int i = 0 ; i < 4 ; i++){
                int color = i * 13;
                for(int j = 0 ; j < 13 ; j++){
                    int number = j + 2;
                    Poker poker = new Poker(color,number);
                    pokerlist.add(poker);
                }
            }
        }
    
        //遍历输出
        public void eachPoker(){
            for(Poker po : pokerlist){
                System.out.print(po.toString() + ",");
            }
            System.out.println();
        }
    
        //洗牌
        public void shufflePoker(){
            Collections.shuffle(pokerlist);
        }
    
        //创建玩家并发牌
        public void dealPoker(){
            System.out.println("请输入第一位玩家的id和姓名");
            System.out.println("输入id:");
            Integer id1 = console.nextInt();
            System.out.println("输入姓名:");
            String name1 = console.next();
            System.out.println("请输入第二位玩家的id和姓名");
            System.out.println("输入id:");
            Integer id2 = console.nextInt();
            System.out.println("输入姓名:");
            String name2 = console.next();
            System.out.println("******欢迎玩家:" + name1);
            System.out.println("******欢迎玩家:" + name2);
    
            System.out.println("******开始发牌******");
            player1 = new Player(id1,name1);
            player2 = new Player(id2,name2);
            player1.playerlist.add(pokerlist.get(0));
            System.out.println("***玩家:" + name1 + " 拿牌***");
            player2.playerlist.add(pokerlist.get(1));
            System.out.println("***玩家:" + name2 + " 拿牌***");
            player1.playerlist.add(pokerlist.get(2));
            System.out.println("***玩家:" + name1 + " 拿牌***");
            player2.playerlist.add(pokerlist.get(3));
            System.out.println("***玩家:" + name2 + " 拿牌***");
            System.out.println("******发牌结束******");
        }
    
        //比较牌的大小
        public void comparePoker(){
            System.out.println("******游戏开始******");
            Collections.sort(player1.playerlist);
            Poker p1 = player1.playerlist.get(1);
            System.out.println("玩家:" + player1.name + "最大的手牌是:" + p1);
            Collections.sort(player2.playerlist);
            Poker p2 = player2.playerlist.get(1);
            System.out.println("玩家:" + player2.name + "最大的手牌是:" + p2);
            if(p1.number > p2.number)
                System.out.println("******玩家:" + player1.name + "获胜!!******");
            else if(p1.number < p2.number)
                System.out.println("******玩家:" + player2.name + "获胜!!******");
            else{
                PokerComparator result = new PokerComparator();
                if(result.compare(p1, p2) == 1)
                    System.out.println("******玩家:" + player1.name + "获胜!!******");
                else
                    System.out.println("******玩家:" + player2.name + "获胜!!******");
            }
        }
    
        //输出各个玩家的手牌
        public void showPoker(){
            System.out.println("玩家各自的手牌为:");
            for(Poker po1 : player1.playerlist){
                System.out.print(player1.name + ":" + po1.toString() + " ");
            }
            System.out.println();
            for(Poker po2 : player2.playerlist){
                System.out.print(player2.name + ":" + po2.toString() + " ");
            }
        }
    }

    这里的sort,使用了Comparable接口,需要重写compareTo方法,根据数值比大小

    //在Poker类里
    @Override
        public int compareTo(Poker o) {
            // TODO Auto-generated method stub
            return this.number.compareTo(o.number);
        }

    还是sort,使用了Comparator接口,需要重写compare方法,当数值相同时根据花色比大小
    之前的等级属性派上用场了

    public class PokerComparator implements Comparator<Poker> {
        @Override
        public int compare(Poker o1, Poker o2) {
            // TODO Auto-generated method stub
            return o1.dengji.compareTo(o2.dengji);
        }
    }

    结果:
    这里写图片描述
    这里写图片描述

    总结:
    难的地方在于比较牌的大小,这里重写了compare方法,并给扑克牌设置了等级属性,这里借鉴了http://www.ituring.com.cn/article/18401

    展开全文
  • 2019湖南多校第

    2019-03-25 13:05:52
    theme:future与peter两人玩纸牌游戏,游戏规则为给两人相同数目的牌,每轮每人拿出一张牌比大小,future的牌>Peter则future赢,否则peter赢。而future可以提前知道peter出牌顺序,问future应怎么安排出牌顺序能...

    K、sisth sence

    theme:future 与peter两人玩纸牌游戏,游戏规则为给两人发相同数目的牌,每轮每人拿出一张牌比大小,future的牌>Peter则future赢,否则peter赢。而future 可以提前知道peter出牌顺序,问future应怎么安排出牌顺序能使赢的次数最大?若有多种出牌方案,则输出字典序最大的序列。

    G、what goes up must come down

    theme:给定一个长度为n的数组,问最少交换相邻元素几次可以使数组变成前一部分元素成非减序,后面一部分元素成非增序。

    D、shortest common non-subsequence

    theme:给定两个由0、1组成的字符串,求最短的不是这两个字符串子序列的序列

    B、 Arithmetic Progression

    theme:给定一个数组,问从数组中抽取任意数量元素,能构成的最长等差数列长度是多少?

    solution:先对数组排序。用map[ pair (a[i], a[j]-a[i] ) ]表示以a[i]为首项,a[j]-a[i]为方差的最长等差数列,可知状态转移方差为

     map[ pair (a[i], a[j]-a[i] ) ] = max( map[ pair (a[j], a[j]-a[i] ) ] , 1) + 1。即以第二项为首项,方差一样的最长等差数列。所以dp时从后往前。

    也可用dp[i][j]表示以a[i]、a[j]作为前两项的最长等差数列。则扫一遍时固定j,两边寻找i,k使得a[i]+a[k]==2*a[j],比将公差作为下标节约了空间。

    #include<bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    #define far(i,n) for(int i=0;i<n;++i)
    
    ll a[5005];
    ll dp[5005][5005]={0};
    
    int main()
    {
        int n;
        cin>>n;
        far(i,n)
            scanf("%lld",&a[i]);
        sort(a,a+n);
        for(int i=0;i<n-1;++i)
            for(int j=i;j<n;++j)
                dp[i][j]=2;
        for(int j=n-2;j>=1;--j)
        {
            int i=j-1,k=j+1;
            while(i>=0&&k<=n-1)
            {
                while(i&&a[i]+a[k]>2*a[j])--i;
                while(k<=n-1&&a[i]+a[k]<2*a[j])++k;
                if(a[i]+a[k]==2*a[j])
                    dp[i][j]=dp[j][k]+1;
                --i;
            }
        }
        ll ans=0;
        for(int i=0;i<n-1;i++)
            for(int j=0;j<n;j++) ans=max(ans,dp[i][j]);
        cout<<ans<<endl;
        return 0;
    }
    

    C、Emergency Evacation

    theme:给定一辆车的座位分布(二维矩阵形式,中间有条过道),有n个乘客,坐在车上不同位置,问最少需要几步他们全都能从exit通道下车。(每次只能往旁边座位或过道移动,或在过道里向后移动)

    solution:这题挺巧妙的。如果直接从正面如何下车考虑,会很麻烦,要考虑拥堵情况。但如果从反面转化为上车情况考虑,就是大水题了。将问题转化为:n个人要上车走到各自的位置,一次一个人从通道进去(对应出来时一步一步从exit出),问最少几步。

    当一个人上车后,他会往前走到自己座位所在的行,然后到列,所以不会影响下一秒上车的人。所以我们以d[i]算出每个人从上车到走到座位要几步,这几步是不能再少的,同t[i]表示每个人要等几步之后能上车了,可知最终结果为min(d[i]+s[i]),d[i]为定值可求的,而s[i]我们分配的上车顺序(对应原题下车反序)。所以最佳安排方案为d[i]越大的越先进。最后找到min(d[i]+i)即可。

    #include<bits/stdc++.h>
    typedef long long ll;
    using namespace std;
    #define far(i,n) for(int i=0;i<n;++i)
    
    int a[500005];
    int ans[500005];
    
    bool cmp(int a,int b)
    {
        return a>b;
    }
    
    int main()
    {
        int r,s,p;
        cin>>r>>s>>p;
        far(i,p)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            if(y<=s)
                a[i]=r-x+1+s-y+1;
            else
                a[i]=r-x+1+y-s;
        }
    //    far(i,p)
    //        cout<<a[i]<<" ";
        sort(a,a+p,cmp);
        for(int i=0;i<p;++i)
        {
            ans[i]=a[i]+i;
        }
        cout<<*max_element(ans,ans+p)<<endl;
    }
    

     

    展开全文
  • python编写扎金花小程序

    千次阅读 多人点赞 2021-01-21 11:02:34
    一付扑克牌,去掉大小王,每个玩家3张牌,最后比大小,看谁赢。 有以下几种牌: 豹子:三张一样的牌,如3张6. 顺金:又称同花顺,即3张同样花色的顺子, 如红桃 5、6、7 顺子:又称拖拉机,花色不同,但是顺子,如...
  • 德州扑克逻辑设计

    2017-12-13 14:32:00
    德州扑克基本玩法: 每个...德州扑克一共押四轮注:每人2张牌后进行第一轮押注;3张公共牌后押第二轮注;第4张公共牌后押第轮注;第5张公共牌后押第四轮注。押注结束后所有剩余玩家进行牌,最大者赢得...
  • UVa 12247 - Jollo

    2017-07-25 10:38:15
     游戏分三轮,每轮每人出异常牌比大小,大的获胜(顺序大,值小的),三局两胜制,  小王子不会玩游戏(认为是随机出牌),现在小王子了3张牌,而小公主了2张牌,  问小公主的第三张牌的最大(值最小)为多少...
  • 其实插入排序相当于玩扑克牌,当牌过程,取上的第一张牌肯定是已经排好序的,当取上第二张或这后面的牌时候,都要跟第一张牌比较,如果第一张牌小,放在第一张前面,否则置原处不动(放),如果取上第三张牌,则...
  •  5、三张牌:三张点数相同的牌。 6、三带一:三张同点牌 一张单牌。例如:三张3 单4 7、三带二:三张同点牌 一对牌。例如:三张3 对4 牌型的大小: 火箭是最大的牌.炸弹、除火箭和自己大的炸弹外,其它...
  • 题目十纸牌游戏 基本要求 一副没有花牌JQ K A大小王的扑克牌两个人进行纸牌游戏其中一 个人为用户另一个人为计算机 每轮每人各 5 张牌各自以这 5张牌建立二叉排序树 由用户先出轮流出牌每次只能出一张并且要...
  • JAVA学习--扎金花

    千次阅读 2016-08-06 16:55:45
    * 砸金花游戏 程序开始时要用户输入赌注,并在一副中随机两手, 每手牌三张,然后比较这两手牌的大小,若AB大, 则用户赢得赌注,反之,则输掉赌注。 * 每手牌的大小比较规则: * 1 三条>同花顺>同花>...
  • 一开始每人都会有自己的两张起手牌(只有自己能看见),第一轮会出现三张公共,第二轮第四张,第三轮第五张。每一轮都可以根据自己的牌型选择下注,跟注,加注,弃。在最后一轮结束时如果还有两位以上的选手...
  • 1、一副没有J、Q、K、A、大小王的扑克牌(40张牌),编号为1-40张牌。第一回合,从40张牌中给双方各随机抽取5张牌,抽出的牌在原数组里删除。第二回合,从剩下30张牌中给双方各随机抽取5张牌,抽出的牌在原数组里...
  • 设计以下程序

    2020-11-22 21:36:34
    名玩家,其中地主其他玩家多3张牌) 牌类 public class Card { /** 牌面值 */ private String name; /** 花色 */ private String flower; /** 大小点数 */ private int num; public Card() { } public Card...
  • 名玩家,其中地主其他玩家多3张牌) (1) 牌类(花色,牌面值, 点数大小) (2) 玩家类(id,名字,是否地主,牌集合) 3-10 J Q K A 2 King Queen * @author ZyKun. * */ import java.util.ArrayList; ...
  • 卡牌游戏

    2020-12-12 14:26:41
    从 第一开始,发给两名玩家,按照一人一张的方式,每人游戏, 较两名玩家手中的扑克,规则为:取两人各自手中点数最大的进行比较, 点数大的赢;若两人各自的点数最大的相等,则再按花色比较。 ...
  • 8.录音及外线设置 可设置软件是否自动录音,根据自己电脑硬盘大小设置录音文件是否删除,删除的话留存多少天删除。特有的外线过滤功能可设置任意外线号码,轻松过滤来电前的外线 9.客户资料的录入 可通过软件...
  • 支持多部电话同时来电同时弹出,多客户可以同时开单,缩短开单时间,市面上队列式弹出更先进 提醒客户预约和订水频率提醒等多种提醒功能,防止客户流失 及时了解客户财务信息-欠桶,欠款,欠票,押桶 可以同时支持...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    晓冬 等编著 )和《16/32 位微机原理、汇编语言及接口技术》(作者: 钟晓捷 陈涛 ,机械工业出版社 出版)等,可以在较大型的科技书店里查找或者直接从网上订购。 6. 初学者到底是应该先学C还是汇编? ...
  • 欢迎各位开发者把自己的项目加进来~ Pull Request 或 Issue 即可 (入选标准:必须是网站或App,不能是开发者工具或论坛型网站) 2. 项目有 3 种状态 开发中 已上线 已关闭或缺乏维护 ✅ ❌ 社区...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

发三张牌比大小