/*
1. 扑克牌的顺子
从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。
2-10 为数字本身, A 为 1 , J 为 11 , Q 为 12 , K 为 13 ,而大小王可以看成任意数字。
*/
//输入中,0代表大小王
#include<algorithm>
#include<iostream>
using namespace std;
void init_list( int list[] ) {
int i;
for( i = 0 ; i < 5 ; i ++ ) {
scanf( "%d" , & list[ i ] );
}
}
bool isContinuous( int list[] ){
//如果存在重复的非0元素,那么就不是连续的
int i;
int min_tag = 0;
int max_tag = 4;
int zero_num = 0;
for( i = 4 ; i > 0 ; i -- ) {
if( ( list[ i ] == list[ i - 1 ] ) && ( list[ i ] != 0 ) ) {
return false;
}
}
//不存在重复的非0元素
//找到最小的非零元素的下标
for( i = 0 ; i < 5 ; i ++ ) {
if( list[ i ] != 0 ) {
min_tag = i;
break;
}
}
zero_num = min_tag;
if( zero_num >= ( list[ 4 ] - list[ min_tag ] - ( 4 - min_tag ) ) ) {
return true;
}
return false;
}
int main( ) {
int list[ 5 ];
bool flag;
init_list( list );
sort( list , list + 5 );
flag = isContinuous( list );
if( flag ) cout << "true" << endl;
else cout << "false" << endl;
return 1;
}
判断5张牌是不是顺子
最新推荐文章于 2022-08-18 15:24:00 发布