#include<bits/stdc++.h>
using namespace std;
int card[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13 };
int nums[4];
char ope[4] = { '+','-','*','/' };
double calcute(double a, double b, char index)
{
if (index == '+') return a + b;
else if (index == '-') return a - b;
else if (index == '*') return a*b;
else if (index == '/')
if (b != 0)
return a / b;
}
int main()
{
int i = 0;
int j;
cout << "生成的四张牌面为:";
srand((unsigned)time(0));
for (i = 0; i<4; i++)
{
j =rand() % 13 ;
nums[i] = card[j];
}
cout << nums[0] << ";" << nums[1] << ";" << nums[2] << ";" << nums[3] << "。" << endl;
double temp[3], tem[2];
double sum;
int judge = 0;
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
for (int k = 0; k < 4; k++)
{
for (int m = 0; m < 3; m++)
{
if (nums[m + 1] == 0 && ope[i] == '/') break;
temp[m] = calcute(nums[m], nums[m + 1], ope[i]);
temp[(m + 1) % 3] = nums[(m + 2) % 4];
temp[(m + 2) % 3] = nums[(m + 3) % 4];
for (int n = 0; n < 2; n++)
{
if (temp[n + 1] == 0 && ope[j] == '/') break;
tem[n] = calcute(temp[n], temp[n + 1], ope[j]);
tem[(n + 1) % 2] = temp[(n + 2) % 3];
if (tem[1] == 0 && ope[k] == '/') break;
sum = calcute(tem[0], tem[1], ope[k]);
if (sum == 24)
{
judge = 1;
if (m == 0 && n == 0)
cout << "((" << nums[0] << ope[i] << nums[1] << ")" << ope[j] << nums[2] << ")" << ope[k] << nums[3] << "=" << sum << endl;
else if (m == 0 && n == 1)
cout << "(" << nums[0] << ope[i] << nums[1] << ")" << ope[k] << "(" << nums[2] << ope[j] << nums[3] << ")=" << sum << endl;
else if (m == 1 && n == 0)
cout << "(" << nums[0] << ope[j] << "(" << nums[1] << ope[i] << nums[2] << ")" << ope[k] << nums[3] << "=" << sum << endl;
else if (m == 1 && n == 1)
cout << nums[0] << ope[k] << "((" << nums[1] << ope[i] << nums[2] << ")" << ope[j] << nums[3] << ")=" << sum << endl;
else if (m == 2 && n == 0)
cout << "(" << nums[0] << ope[j] << nums[1] << ")" << ope[k] << "(" << nums[2] << ope[i] << nums[3] << ")=" << sum << endl;
else if (m == 2 && n == 0)
cout << nums[0] << ope[k] << "(" << nums[1] << ope[j] << "(" << nums[2] << ope[i] << nums[3] << "))=" << sum << endl;
}
}
}
}
}
}
if (judge == 0)
cout << "这四张扑克牌无法找到一个合理的解" << endl;
return 0;
}
24点游戏游戏(C++)
最新推荐文章于 2022-12-10 15:43:38 发布