luogu P1834 速算游戏 题解
2022-01-13 20:52:15
thumb_up 0
模拟大题
模拟赛没人的碰题,不简单
前言:为了表达,一下将类似于“(((3+5)+2)+7)”的东西称作“形式化”
思路: 在枚举全排列时做关于运算操作,两两合并,枚举四种运算答案与形式
难点:
(1)怎样保存在搜索时的“形式化”答案?
(2)两两合并后的回溯问题
(3)字典序问题
解决:
(1)在合并时顺便处理“形式化”的答案
(2)不妨将前后化成一样的赋值方法,类似于:
1.令a[1]为第一个数,那么易得两两合并与原四个数个数的和为7,因为4个数两两合并会产生4+4-1=7个数2.答案在a[7]3.因为是直接赋值所以不用回溯
(3)取库里的min,字符串大小比较标准就是字典序
形式化可以与a[7]的思路一样
0.代码:
#include<bits/stdc++.h>using namespace std;int a[10];
string ans,s[10];
bool v[10],g[10];
//s——形式化答案
void dfs(int k){if(k==7){if(a[7]==24){if(ans == "") ans = s[7];//7是答案ans=min(ans,s[7]);}return;}for(int i=1;i<=k;i++)//到k是因为每次操作会多一个数{if(!v[i]){v[i]=true;for(int j=1;j<=k;j++){if(i==j) continue;//合并i,j两个数值if(!v[j]){//基本全排列判重v[j]=true;//标记a[k+1]=a[i]+a[j]//数值处理;s[k+1]="("+s[i]+"+"+s[j]+")";//形式化处理dfs(k+1);a[k+1]=a[i]-a[j];s[k+1]="("+s[i]+"-"+s[j]+")";dfs(k+1);a[k+1]=a[i]*a[j];s[k+1]="("+s[i]+"*"+s[j]+")";dfs(k+1);//同上if(a[j] != 0)//被除数不为0if(a[i]%a[j]==0){//能整除s[k+1]="("+s[i]+"/"+s[j]+")";a[k+1]=a[i]/a[j];dfs(k+1);}v[j]=false;//回溯}}v[i]=false;}}
}
int main()
{for(int i=1;i<=4;i++) cin >> a[i];for(int i=1;i<=4;i++) s[i]+=char(a[i]+48);//形式化s[1-4]先与a[1-4]相同dfs(4);//先是枚举(1~4的合并)cout << ans;return 0;
}
luogu P1834 速算游戏 题解相关推荐
- 【暴力枚举】速算游戏 fun.pas/c/cpp
速算游戏 fun.pas/c/cpp 源程序名 fun.pas|c|cpp 输入文件名 fun.in 输出文件名 fun.out 时间限制 1s/testcase 空间限制 32MB 问题描述 jyx ...
- 速算24点java_24点速算游戏 Java 代码
import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.H ...
- 改进后的速算小游戏(2011211909 苟玲、2011211933 郝怡然)
1.开发环境: Visual C++ 6.0 使用C语言编写 2.功能说明: 该游戏是几个小游戏的结合体,主要是针对小学生的速算练习.其改进之处在于在普通的速算程序的基础上添加了几个小游戏,在进 ...
- Python写个小游戏:速算24点(上)
文章目录 前言 速算24点 1. 玩法简介 2. 游戏流程 3. 搭建游戏界面 1). 基本界面 2). 洗牌.发牌 洗牌 发牌 3). 计时器 4). 玩家输入公式(答案) StringVar类 按 ...
- Python写个小游戏:速算24点(下)
文章目录 前言 速算24点 1. 玩法简介 2. 游戏流程 3. 剩下的部分 1). 关卡 / 分数信息 IntVar类 2). 提示按钮 图片 按钮 3). 重新发牌 4. 让电脑计算24点 1). ...
- 计算机二十四点游戏,比比速算24点游戏
电脑扑克牌游戏试运行在PC端的智力小游戏,这次带来的是比比速算24点游戏,学习纸牌的同时还能不断提高你的头脑思维能力,让你的智商一天比一天更高.比比速算24点游戏设置了一级高手.二级能手.三级好手.四 ...
- 速算C语言程序设计,C语言程序设计课程设计-速算24.doc
该设计论文已经通过各大高校老师审核认可并通过答辩,准确完整无误.欢迎大家下载学习交流.如有疑问可随时联系店主,竭诚为您解答!! 应用技术学院 课 程 设 计 报 告 课程名称 C语言课程设计 课题名称 ...
- 下坠的小鸟(flappy bird)速算版
下坠的小鸟速算版是根据著名的像素鸟(flappy bird)改编而成的一款运行在pc web上的游戏,它跟传统的玩法稍有不同,你必须时刻计算当前数字的倍数,以便为通过下一个数字缺口做准备,而不仅仅只是 ...
- PHP怎么做一个加法口诀,神奇的手指速算口诀,100以内的加减法一分钟学会
手指速算是一套手.心.脑并用的科学计算方法,教孩子学会,既能开发大脑.增强动作协调能力和记忆力,还能增强学习兴趣哦~ 学起来并不难哦,爸爸妈妈可以和孩子一起算一算,比比看谁更快! 手指速算秘诀 准备: ...
最新文章
- uboot启动linux,uboot中ramdisk启动linux的两种方法
- [vue] vue为什么要求组件模板只能有一个根元素?
- 5如何让进行项目管理
- java string的作用_浅谈java String不可变的好处
- vue打包后CSS中引用的背景图片不显示问题
- BGP AS过滤列表
- paip.为什么软件体积越来越大
- Materials studio中的简单聚合物的建立及盒子的弛豫
- 在MFC中的socket编程
- java 压力测试_记一次完整的java项目压力测试
- 电脑如何分盘win10_Win10电脑如何刻录光盘?利用win10自带刻录工具来刻录DVD光盘教程...
- handsome主题添加服务器信息,handsome主题时光机微信发送系统
- 顶!Python 与 Excel 终于在一起了
- 质量管理体系认证的有关知识
- 笔记本电脑玩魔兽争霸 屏幕比例小了怎么办?
- 一图看懂LGPL,MPT,GPL,BSD,MIT,Apache协议(最新版)
- node爬虫_爬取斗图啦网站上的表情包
- 对于全栈工程师的思考
- 1080P和720P电影的分辨率到底是多少
- Android微信界面的制作