题意:从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,大小王可以看成任意数字。
思路:正常方法模拟一下。
小坑:牌不一样有五张。
class Solution {
public:
bool IsContinuous(vector<int> numbers) {
if (numbers.size() != 5) return false;
sort(numbers.begin(), numbers.end());
int num[10];
if (numbers[4] == 0 || numbers[3] == 0)
{
return true;
}
else if (numbers[2] == 0)
{
if (numbers[4] - numbers[3] != 0 && numbers[4] - numbers[3] <= 3)
return true;
return false;
}
else if (numbers[1] == 0)
{
for (int i = 1; i <= 13; i++)
{
for (int j = i + 1; j <= 13; j++)
{
num[0] = i;
num[1] = j;
num[2] = numbers[2];
num[3] = numbers[3];
num[4] = numbers[4];
sort(num, num + 5);
if (num[0] + 1 == num[1] &&
num[1] + 1 == num[2] &&
num[2] + 1 == num[3] &&
num[3] + 1 == num[4])
return true;
}
}
}
else if (numbers[0] == 0)
{
for (int i = 1; i <= 13; i++)
{
num[0] = i;
num[1] = numbers[1];
num[2] = numbers[2];
num[3] = numbers[3];
num[4] = numbers[4];
sort(num, num + 5);
if (num[0] + 1 == num[1] &&
num[1] + 1 == num[2] &&
num[2] + 1 == num[3] &&
num[3] + 1 == num[4])
return true;
}
}
else
{
if (numbers[0] + 1 == numbers[1] &&
numbers[1] + 1 == numbers[2] &&
numbers[2] + 1 == numbers[3] &&
numbers[3] + 1 == numbers[4])
return true;
}
return false;
}
};