码迷,mamicode.com
首页 > 其他好文 > 详细

华为机试—5张扑克牌的组成

时间:2015-06-27 16:46:30      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:扑克牌点数   华为机试   华为扑克   5张扑克牌   顺子   

一副牌中发五张扑克牌给你:让你判断数字的组成:
有以下几种情况:
1:四条:即四张一样数值的牌(牌均不论花色)
2:三条带 一对
3:三条带两张不相同数值的牌
4:两对
5:顺子 包括 10,J,Q,K,A
6:什么都不是
7:只有一对。

c

#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
int cmp(const void *a,const void *b)
{
    return *(int*)a-*(int*)b;
}
int main()
{ 
    string str;
    cin>>str;
    int flag;
    int num[5],m=0;
    for(int i=0;i<str.size()&&m<5;i++)
    {
        if(str[i]>=‘2‘&&str[i]<=‘9‘)
            num[m++]=str[i]-‘0‘;
        else if(str[i]==‘1‘&&str[i+1]==‘0‘)
        {
            num[m++]=10;
            i++;
        }
        else if(str[i]==‘J‘||str[i]==‘j‘)
            num[m++]=11;
        else if(str[i]==‘Q‘||str[i]==‘q‘)
            num[m++]=12;
        else if(str[i]==‘K‘||str[i]==‘k‘)
            num[m++]=13;
        else if(str[i]==‘A‘||str[i]==‘a‘)
            num[m++]=14;
        else
        {
            cout<<"输入错误"<<endl;
            return 0;
        }
    }
    qsort(num,5,sizeof(int),cmp);
    if(num[0]==num[3]||num[1]==num[4])
        flag=1;
    else if((num[0]==num[2]&&num[3]==num[4])||(num[2]==num[4]&&num[0]==num[1]))
        flag=2;
    else if((num[0]==num[2]&&num[3]!=num[4])||(num[2]==num[4]&&num[0]!=num[1])||num[1]==num[3])
        flag=3;
    else if((num[0]==num[1]&&num[2]==num[3])||(num[0]==num[1]&&num[3]==num[4])||(num[1]==num[2]&&num[3]==num[4]))
        flag=4;
    else if(num[0]==num[1]||num[1]==num[2]||num[2]==num[3]||num[3]==num[4])
        flag=7;
    else if(num[4]-num[0]==4)
        flag=5;
    else
        flag=6;
    cout<<flag<<endl;
    return 0;   
}

java

import java.util.Arrays;
import java.util.Scanner;


public class pukeNum {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        String str = s.nextLine();

        int flag;
        int []num= new int[5];
        int m=0;
        for(int i=0;i<str.length()&&m<5;i++)
        {
            if(str.charAt(i)>=‘2‘&&str.charAt(i)<=‘9‘)
                num[m++]=str.charAt(i)-‘0‘;
            else if(str.charAt(i)==‘1‘&&str.charAt(i+1)==‘0‘)
            {
                num[m++]=10;
                i++;
            }
            else if(str.charAt(i)==‘J‘||str.charAt(i)==‘j‘)
                num[m++]=11;
            else if(str.charAt(i)==‘Q‘||str.charAt(i)==‘q‘)
                num[m++]=12;
            else if(str.charAt(i)==‘K‘||str.charAt(i)==‘k‘)
                num[m++]=13;
            else if(str.charAt(i)==‘A‘||str.charAt(i)==‘a‘)
                num[m++]=14;
            else
            {
                System.out.println("输入错误");
                return;
            }
        }

        Arrays.sort(num);

        if(num[0]==num[3]||num[1]==num[4])
            flag=1;
        else if((num[0]==num[2]&&num[3]==num[4])||(num[2]==num[4]&&num[0]==num[1]))
            flag=2;
        else if((num[0]==num[2]&&num[3]!=num[4])||(num[2]==num[4]&&num[0]!=num[1])||num[1]==num[3])
            flag=3;
        else if((num[0]==num[1]&&num[2]==num[3])||(num[0]==num[1]&&num[3]==num[4])||(num[1]==num[2]&&num[3]==num[4]))
            flag=4;
        else if(num[0]==num[1]||num[1]==num[2]||num[2]==num[3]||num[3]==num[4])
            flag=7;
        else if(num[4]-num[0]==4)
            flag=5;
        else
            flag=6;

        System.out.println(flag);

    }

}

技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

华为机试—5张扑克牌的组成

标签:扑克牌点数   华为机试   华为扑克   5张扑克牌   顺子   

原文地址:http://blog.csdn.net/wtyvhreal/article/details/46660001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!