当前位置: 首页 > news >正文

蓝桥杯-24点-搜索

题目

思路

--暴力递归全组合的方法。只有4个数,4种计算方式,共有4 * 3 * 2 * 1 * 4种不同的情况,可以写递归来实现。

--每次计算都是两个数之间的运算,因此4个数需要3次计算,第一次计算前有4个数,第二次有3个数,第三次有两个数,那么怎么在数组长度恒为4时,将每次计算需要使用的数字个数减少呢,就可以将a[0]来记录n个数的最后一个数的值,让前面n个数始终为有效数字。

代码

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;int a[4];
int maxr;void dg(int n){if (n == 1){if (a[0] <= 24){maxr = max(maxr, a[0]);}return;}else{for (int i = 0; i < n - i; i++){for (int j = i + 1; j < n; j++){ //双重循环,正好是4 * 3 * 2 * 1种可能。 int b1 = a[i];int b2 = a[j]; //找a[i]和a[j]的替身。 a[j] = b1 + b2;a[i] = a[n - 1]; //将a[i]和最后一个数替换,使得有效数字逐渐减少,非常巧妙的方法。 dg(n - 1);a[j] = b1 - b2;a[i] = a[n - 1]; //每个递归的前面都要重新确定a[i]的值,上一次递归结束后,a[i]的值很可能改变。 dg(n - 1);a[j] = b2 - b1;a[i] = a[n - 1];dg(n - 1);a[j] = b1 * b2;a[i] = a[n - 1];dg(n - 1);if (b2 != 0 && b1 % b2 == 0){ //除数不能为0! a[j] = b1 / b2;dg(n - 1);}if (b1 != 0 && b2 % b1 == 0){a[j] = b2 / b1;dg(n - 1);}a[i] = b1;a[j] = b2;}}}
}
int main(){int n;cin >> n;for (int i = 0; i < n; i++){maxr = 0; //每次循环,都要将其定为0,否则以后输出的都是最大值 for (int j = 0; j < 4; j++){cin >> a[j];}dg(4);cout << maxr << endl;}return 0;
}

http://www.lryc.cn/news/320722.html

相关文章:

  • 【附下载】3Ds Max从安装、配置到入门提高和高级用法
  • 开源堡垒机Jumpserver
  • PyTorch学习笔记之基础函数篇(十五)
  • Latex插入pdf图片,去除空白部分
  • 微服务:高并发带来的问题的容错方案
  • sqllab第35-45关通关笔记
  • Jenkins流水线将制品发布到Nexus存储库
  • 信息学奥赛一本通之MAC端VSCode C++环境配置
  • MPIKGC:大语言模型改进知识图谱补全
  • Flutter-自定义图片3D画廊
  • python中如何解析Html
  • Hystrix的原理及应用:构建微服务容错体系的利器(一)
  • win10企业版LTSC可以识别鼠标,无法识别移动硬盘问题
  • [经验分享]OpenCV显示上一次调用的图片的处理方法
  • NFS性能优化参考 —— 筑梦之路
  • Vue3学习日记 Day4 —— pnpm,Eslint
  • 二叉树遍历(牛客网)
  • 语音识别:whisper部署服务器(远程访问,语音实时识别文字)
  • Faust勒索病毒:了解最新变种[nicetomeetyou@onionmail.org].faust,以及如何保护您的数据
  • EI Scopus检索 | 第二届大数据、物联网与云计算国际会议(ICBICC 2024) |
  • 判断闰年(C语言)
  • 2024全国水科技大会【协办单位】凌志环保股份有限公司
  • 以太坊开发学习-solidity(二)值类型
  • 实景剧本杀小程序儿童公园剧本杀小程序系统开发
  • AJAX——综合案例
  • 数字化社会的新纪元:揭秘 Web3 的社交网络
  • 旋转花键的制造工艺
  • python--高阶函数
  • Vue/Uni-app/微信小程序 v-if 设置出场/退出动画(页面交互不死板,看起来更流畅)
  • 加速量子计算机商业化!富士通日立NEC等联合成立新量子计算公司