蓝桥题库每日一练 · 2026.07.04

7月4日 「计算 24」:给 4 个 1~10 之间的自然…

C++编程题参考难度 ★★★☆☆蓝桥杯第十一届 选拔赛 · 已用
「计算 24」:给 4 个 1~10 之间的自然数,用加、减、乘三种运算(乘法优先级高于加减,不能用括号,不能改变 4 个数出现的顺序),使结果等于 24。请输出方案总数。输入:四个整数;输出:方案总数。
样例
输入 7 2 3 6输出 0
输入 10 2 4 8输出 2
评分标准
  • 30 分:完成题目样例与给出的第一个测试用例
  • 40 分:再完成三个测试用例
  • 50 分:完成全部测试用例
参考解法
先读懂规则再动手:四个数顺序不能变,中间三个空各填 +、−、× 里的一个,而且 × 要先算。问一共有几种填法能凑出 24。

第一步,先掂量一下规模:三个空、每个空三选一,就是 3×3×3=27 种填法——不多,完全可以一种种试过去。这种「把所有可能都试一遍」的笨办法,有个正经名字叫「枚举」,题目不大时它最老实、最不会错。

第二步是真正的难点:怎么让程序做到「× 先算」又「不许加括号」?有个很干净的办法——从左往右扫,碰到 × 就把它和前一个数先乘起来、攒成一块;碰到 + 或 −,就把攒好的这一整块作为「一项」收进总和。这样乘法自然就先算完了。

看代码前先认识两个老朋友:cin 是「把数读进来」,cout 是「把结果打出去」,C++ 程序几乎每天都要用它俩。好,把 27 种都跑一遍,数出结果等于 24 的有几种:

#include <bits/stdc++.h>
using namespace std;
int a[4];
int main(){
  for(int i=0;i<4;i++) cin>>a[i];
  char op[3]={'+','-','*'}; int cnt=0;……

看此题详解,练更多题目,进入蓝桥题库每日一练 →

此答案或解析由 AI 生成,请谨慎使用。
难度依赛考组别及等考级别粗略评估,仅供参考。