德州扑克问题 :一副牌中发五张扑克牌给你:让你判断数字的组成:有以下几种情况:
1:四条:即四张一样数值的牌(牌均不论花色)2:三条带 一对
3:三条带两张不相同数值的牌
4:两对
5:顺子 包括 10,J,Q,K,A
6:什么都不是
7:只有一对
编程实现以上功能。
解析:
#include
"stdio.h"
void
sort(int
data[],
int
n)
{
int
temp =
0;
for
(int
i =
0; i < n; i++)
{
for
(int
j = i +
1; j < n; j++)
{
if
(data[i] < data[j])
{
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
}
void
test(int
a[],
int
len)
{
int
*b =
new
int[len];
int
count =
0;
bool temp =
false;
for
(int
i =
0; i < len; i++)
{
b[i] = a[i];
}
sort(b,
5);
for
(i =
0; i < len -
1; i++)
{
if
(b[i] == b[i +
1])
count++;
}
switch
(count)
{
case
0:
if
(b[0] - b[4] ==
4
&& b[0] - b[3] ==
3
&& b[0] - b[2] ==
2
&& b[0] - b[1] ==
1)
{
printf("顺子");
}
else
printf("什么都不是");
break;
case
1:
printf("只有一对");
break;
case
2:
for
(i =
0; i <
3; i++)
{
if
(b[i] == b[i +
2])
{
printf("三条带两张不相同数值的牌");
temp =
true;
break;
}
}
if
(!temp)
{
printf("两对");
}
break;
case
3:
if
(b[1] == b[3])
printf("四条:即四张一样数值的牌");
else
printf("三条带一对");
break;
}
}
main()
{
int
a[5] = {3,
3,
3,
3,
12};
test(a,
5);
return
0;
}