42点问题

题目描述

请你设计一个程序对该问题进行解答。

众所周知在扑克牌中,有一个老掉牙的游戏叫做 24 点,选取 4 张牌进行加减乘除,看是否能得出 24 这个答案。

现在小蓝同学发明了一个新游戏,他从扑克牌中依次抽出6张牌,注意不是一次抽出,进行计算,看是否能够组成 42 点,满足输出 YES,反之输出 NO

最先抽出来的牌作为第一个操作数,抽出牌做第二个操作数,运算结果再当作第一个操作数,继续进行操作。

注:除不尽的情况保留整数,而且扑克牌的四张 10都丢了,不会出现 10。

请设计一个程序对该问题进行解答。

输入描述

输出仅一行包含 6 个字符。

保证字符 ∈ 3 4 5 6 7 8 9 10 J Q K A 2

输出描述

若给出到字符能够组成 42点 , 满足输出 YES,反之输出 NO

42点问题_第1张图片

解题思路:

每次枚举两个数,递归进行加减乘除的运算,剩下的数放到另一个数组里,每次计算之后的数字也重新放入那个数组中,直至最后只剩下一个数,这个数就是计算结果。

代码:

#include
using namespace std;
char s[10];
int a[10];
bool jisuan(int *b,int k)
{
	if(k==1)
	{
		if(b[0]==42)
		{
			return true;
		}
		else
		return false;
	}
	int c[10];
	for(int i=0;i>s[i];
		if(s[i]=='A')
		{
			a[i]=1;
		}
		else if(s[i]=='J')
		{
			a[i]=11;
		}
		else if(s[i]=='Q')
		{
			a[i]=12;
		}
		else if(s[i]=='K')
		{
			a[i]=13;
		}
		else
		a[i]=s[i]-'0';
	}
	if(jisuan(a,6))
	{
		cout<<"YES";
	}
	else
	{
		cout<<"NO";
	}
	return 0;
 } 

你可能感兴趣的:(笔记,蓝桥杯,c++,算法)