刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

“计算24"

程序命名:c24.cpp

“计算24"是一个流传已久的数字游戏,小蓝最近对此痴迷不已。

游戏规則是:对4个1-10之间的自然数,进行加、减、乘三种运算,要求运算結果等于24。乘法的优先级高于加、减,并且算式中不可以用括号,不可以改变4个数字出现的顺序。

下面我们给出两个游戏的具体例子:

若给出的4个操作数是:10、2、4、8,则有两种可能的解答方案:

10+2+4+8=24,10*2-4+8=24,输出内容:2

若给出的4个操作數是:7、2、3.6,则没有解答案,输出内容:0。

输入

四个整数。

输出

输出方案总数


样例输入1:

7 2 3 6

样例输出1:

0

样例输入2:

10 2 4 8

样例输出2:

2

使用微信搜索喵呜刷题,轻松应对考试!

答案:

```cpp#include#includeusing namespace std;int calc(vector& nums, int index, double target, vector& op, double result) if (index == nums.size()) {return target == result ? 1 : 0;}int count = 0;for (int i = 0; i < 3; i++) {if (i == 0) {count += calc(nums, index + 1, target, op, result + nums[index]);}else if (i == 1) {double temp = result;result = result - nums[index];count += calc(nums, index + 1, target, op, result);result = temp;}else {double temp = result;result = result * nums[index];count += calc(nums, index + 1, target, op, result);result = temp;}}return count;int main() int n;cin >> n;vector nums(n);for (int i = 0; i < n; i++) {cin >> nums[i];}int count = 0;for (int i = 0; i < nums.size(); i++) {for (int j = 0; j < nums.size(); j++) {if (i != j) {for (int k = 0; k < nums.size(); k++) {if (k != i && k != j) {for (int l = 0; l < nums.size(); l++) {if (l != i && l != j && l != k) {double target = 24.0;vector op;op.push_back(1);op.push_back(2);op.push_back(3);random_shuffle(op.begin(), op.end());count += calc(nums, 0, target, op, 0);swap(nums[i], nums[j]);random_shuffle(op.begin(), op.end());count += calc(nums, 0, target, op, 0);swap(nums[i], nums[k]);random_shuffle(op.begin(), op.end());count += calc(nums, 0, target, op, 0);swap(nums[j], nums[k]);random_shuffle(op.begin(), op.end());count += calc(nums, 0, target, op, 0);}}}}}}}cout << count << endl;return 0;```

解析:

【喵呜刷题小喵解析】:

本题是一道经典的动态规划问题,需要对4个数字进行排列组合,通过递归计算每一种可能性。递归过程中,每次选取一个数字进行加法、减法、乘法运算,然后递归计算剩下的数字,直到所有的数字都使用完。最后,比较计算结果与24是否相等,若相等,则计数加一。

上述代码中,首先输入四个数字,然后通过四个循环来遍历所有可能的数字组合方式,对每一种组合方式,通过递归调用`calc`函数来计算。在`calc`函数中,对于当前的数字,分别进行加法、减法、乘法运算,然后递归计算剩下的数字,直到所有的数字都使用完。最后,比较计算结果与24是否相等,若相等,则返回1,否则返回0。

需要注意的是,由于题目要求算式中不可以用括号,并且不可以改变4个数字出现的顺序,因此在计算过程中,需要对数字进行交换,并随机生成运算符的顺序。

最终,将所有可能性的计数相加,即为最终的结果。
创作类型:
原创

本文链接:“计算24" 程序命名:c24.cpp “计算24"是一个流传已久的数字游戏,小蓝最近对此痴迷不已。

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share