当前位置:   article > 正文

蓝桥杯青少年创意编程大赛题解:计算24_24点 输出方案个数

24点 输出方案个数

题目描述

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

游戏规则是:对 4 4 4 1 ∼ 10 1 \sim 10 110 之间的自然数,进行加、减、乘三种运算,要求运算结果等于 24 24 24

乘法的优先级高于加、减,并且算式中不可以用括号,不可以改变 4 4 4 个数字出现的顺序。

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

若给出的 4 4 4 个操作数是: 10 10 10 2 2 2 4 4 4 8 8 8,则有两种可能的解答方案: 10 + 2 + 4 + 8 = 24 10+2+4+8=24 10+2+4+8=24 10 × 2 − 4 + 8 = 24 10\times 2-4+8=24 10×24+8=24

若给出的 4 4 4 个操作数是: 7 7 7 2 2 2 3 3 3 6 6 6,则没有解答方案。

请你输出解答方案数。

输入格式

四个整数。

输出格式

输出方案总数。

输出时每行末尾的多余空格,不影响答案正确性

样例输入1

7 2 3 6

样例输出1

0

样例输入2

10 2 4 8

样例输出2

2

算法思想

打表。因为不可以改变 4 4 4 个数字出现的顺序,那么 3 3 3个操作符的组合一共 27 27 27种,那么可以将 27 27 27种组合全部表示出来,计算结果是24的表达式的个数。

代码实现

#include <iostream>
using namespace std;
int main()
{
     //char op[] = "+-*";
    // for(int i = 0; i < 3; i ++)
    //     for(int j = 0; j < 3; j ++)
    //         for(int k = 0; k < 3; k ++)
    //         {
    //             cout <<"x = a "<< op[i] << " b " << op[j] << " c " << op[k] << " d;" << endl;
    //             cout << "if(x == 24) res ++;" << endl;
    //         }
    
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    int res = 0, x;
    x = a + b + c + d;
    if(x == 24) res ++;
    x = a + b + c - d;
    if(x == 24) res ++;
    x = a + b + c * d;
    if(x == 24) res ++;
    x = a + b - c + d;
    if(x == 24) res ++;
    x = a + b - c - d;
    if(x == 24) res ++;
    x = a + b - c * d;
    if(x == 24) res ++;
    x = a + b * c + d;
    if(x == 24) res ++;
    x = a + b * c - d;
    if(x == 24) res ++;
    x = a + b * c * d;
    if(x == 24) res ++;
    x = a - b + c + d;
    if(x == 24) res ++;
    x = a - b + c - d;
    if(x == 24) res ++;
    x = a - b + c * d;
    if(x == 24) res ++;
    x = a - b - c + d;
    if(x == 24) res ++;
    x = a - b - c - d;
    if(x == 24) res ++;
    x = a - b - c * d;
    if(x == 24) res ++;
    x = a - b * c + d;
    if(x == 24) res ++;
    x = a - b * c - d;
    if(x == 24) res ++;
    x = a - b * c * d;
    if(x == 24) res ++;
    x = a * b + c + d;
    if(x == 24) res ++;
    x = a * b + c - d;
    if(x == 24) res ++;
    x = a * b + c * d;
    if(x == 24) res ++;
    x = a * b - c + d;
    if(x == 24) res ++;
    x = a * b - c - d;
    if(x == 24) res ++;
    x = a * b - c * d;
    if(x == 24) res ++;
    x = a * b * c + d;
    if(x == 24) res ++;
    x = a * b * c - d;
    if(x == 24) res ++;
    x = a * b * c * d;
    if(x == 24) res ++;
    cout << res; 
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/64286
推荐阅读
相关标签
  

闽ICP备14008679号