2025年快算24(24点)

快算24(24点)题目描述 快算 24 点游戏规则是这样的 作为游戏者将得到 4 个 1 9 之间的自然数作为操作数 而你的任务是对这 4 个操作数进行 的 4 种运算 要求运算结果等于 24 你可以用 来改变运算顺序 注意

大家好,我是讯享网,很高兴认识大家。

题目描述

快算24点游戏规则是这样的,作为游戏者将得到4个1~9之间的自然数作为操作数,而你的任务是对这4个操作数进行 +,-,*,/ 的4种运算,要求运算结果等于24。

你可以用( )来改变运算顺序。注意,所有的中间结果必须是整数,所以一些除法运算是不允许的(例如(2*2)/4是合法的,2*(2/4)是不合法的)。

下面给出一个游戏的具体例子:

若给出的4个操作数是1、2、3、7,则一种可能的解答是 1+2+3*7=24。


讯享网

输入:输入4个1~9之间的自然数。

输出:如果有解的话,只需输出一个解,输出的是三行数据,分别表示运算的步骤,如果两个操作数有大小的话则先输出大的,如果没有解则输出“No”。

AC代码:

#include <iostream> #include <cmath> #include <algorithm> using namespace std; int a[5]; char opt[5] = {' ','+','-','*','/'}; int i,j,k; int ff(int x,int ch,int y){ if(ch == 1) return x + y; if(ch == 2) return max(x,y) - min(x,y); if(ch == 3) return x * y; if(ch == 4) return (y == 0 || x < y || x % y != 0) ? - : x / y; } void pf(int a,int b,int c,int d,int e,int f) { cout << max(a,b) << opt[i] << min(a,b) << "=" << ff(max(a,b),i,min(a,b)) << endl; cout << max(c,d) << opt[j] << min(c,d) << "=" << ff(max(c,d),j,min(c,d)) << endl; cout << max(e,f) << opt[k] << min(e,f) << "=" << ff(max(e,f),k,min(e,f)) << endl; exit(0); } int main() { cin >> a[1] >> a[2] >> a[3] >> a[4]; sort(a + 1,a + 5); do{ for( i = 1;i <= 4;i ++){ // 枚举 符号 for( j = 1;j <= 4;j ++) { for( k = 1;k <= 4;k ++){ // ((a ? b) ? c) ? d if(ff(ff(ff(a[1],i,a[2]),j,a[3]),k,a[4]) == 24) pf(a[1],a[2],ff(a[1],i,a[2]),a[3],ff(ff(a[1],i,a[2]),j,a[3]),a[4]); // (a?b)?(c?d) else if(ff(ff(a[1],i,a[2]),k,ff(a[3],j,a[4])) == 24) pf(a[1],a[2],a[3],a[4],ff(a[1],i,a[2]),ff(a[3],j,a[4])); } } } }while(next_permutation(a + 1,a + 5)); return 0; } 

讯享网

运行结果

完结撒花✿✿ヽ(°▽°)ノ

都看到这里了,确定不给一个赞吗?

小讯
上一篇 2025-02-28 23:33
下一篇 2025-02-22 17:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/62424.html