洛谷【P1236】算24点
我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html
题目传送门:https://www.luogu.org/problemnew/show/P1236
算\(24\)点应该是大家耳熟能详的游戏了……
这题\(SPJ\),要求把两个要运算的数字较大的放在前面输出……
然后爆搜数字顺序和运算符就可以了……
真~暴力美学
时间复杂度:\(O(4!*4^3)\)
空间复杂度:\(O(n)\)
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
bool bo[5];
int a[5],sta[5],sign[4],fake[5];
int read() {
int x=0,f=1;char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-1;
for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+ch-'0';
return x*f;
}
void print() {
int sum=sta[1];
for(int i=2;i<=4;i++) {
if(sum<sta[i])swap(sum,sta[i]);
if(sign[i-1]==1)printf("%d+%d=%d\n",sum,sta[i],sum+sta[i]),sum+=sta[i];
if(sign[i-1]==2)printf("%d-%d=%d\n",sum,sta[i],sum-sta[i]),sum-=sta[i];
if(sign[i-1]==3)printf("%d*%d=%d\n",sum,sta[i],sum*sta[i]),sum*=sta[i];
if(sign[i-1]==4)printf("%d/%d=%d\n",sum,sta[i],sum/sta[i]),sum/=sta[i];
}
}//输出
void check() {
memcpy(fake,sta,sizeof(fake));
int now=fake[1];
for(int i=2;i<=4;i++) {
if(now<fake[i])swap(now,fake[i]);//记得要把大的数字放在前面判
if(sign[i-1]==1)now=now+fake[i];
if(sign[i-1]==2)now=now-fake[i];
if(sign[i-1]==3)now=now*fake[i];
if(sign[i-1]==4) {
if(fake[i]==0)return;
if(now%fake[i])return;
now/=fake[i];
}
}
if(now==24) {print();exit(0);}
}//判断是否可以算出24
void make_sign(int id) {
if(id==3) {check();return;}
for(int i=1;i<=4;i++)
sign[id+1]=i,make_sign(id+1);
}//搜完运算符就判是否可行
void dfs(int id) {
if(id==4) {
for(int i=1;i<=4;i++)
sign[1]=i,make_sign(1);
return;
}//搜完数字搜运算符
for(int i=1;i<=4;i++)
if(!bo[i]) {
bo[i]=1,sta[id+1]=a[i];
dfs(id+1);
bo[i]=0;
}//爆搜数字
}
int main() {
a[1]=read(),a[2]=read();
a[3]=read(),a[4]=read();//读入四个数
for(int i=1;i<=4;i++) {
bo[i]=1;sta[1]=a[i];
dfs(1);
bo[i]=0;//爆搜
}puts("No answer!");//如果爆搜出不了结果就No answer!
return 0;
}
洛谷【P1236】算24点的更多相关文章
- 洛谷P1236 算24点
题目描述 几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为“算24点”.您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数进行适当的算术运算, ...
- 洛谷 P1236 算24点
题目描述 几十年前全世界就流行一种数字游戏,至今仍有人乐此不疲.在中国我们把这种游戏称为"算24点".您作为游戏者将得到4个1~9之间的自然数作为操作数,而您的任务是对这4个操作数 ...
- 题解 洛谷P1236 【算24点】
不得不说,个人认为许多大佬们把程序想复杂了,所以码量很长,但是实际上这题并不要这么复杂... 可以考虑用一个\(dfs\)维护一个状态\(f(n)[a_1,a_2--a_n]\) 接下来我们暴力枚举两 ...
- P1236 算24点
#include <bits/stdc++.h> using namespace std; int b[4]; int a[3]; int calc(int a, int b, int c ...
- [洛谷P3254] [网络流24题] 圆桌游戏
Description 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,--,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,--,n) ...
- [洛谷P4012] [网络流24题] 深海机器人问题
Description 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生 ...
- 洛谷 P1957 口算练习题
洛谷 P1957 口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效 ...
- 网络流24题 第三题 - CodeVS1904 洛谷2764 最小路径覆盖问题 有向无环图最小路径覆盖 最大流 二分图匹配 匈牙利算法
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - CodeVS1904 题目传送门 - 洛谷2764 题意概括 给出一个有向无环图,现在请你求一些路径,这些路径 ...
- 洛谷 P2763 试题库问题(网络流24题之一)
题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. ...
随机推荐
- Spring标签@Aspect-实现面向方向编程(@Aspect的多数据源自动加载)——SKY
从Spring 2.0开始,可以使用基于schema及@AspectJ的方式来实现AOP.由于@Aspect是基于注解的,因此要求支持注解的5.0版本以上的JDK. 环境要求: 1. mybit ...
- [php][随机数]曲线式的随机
数学函数原型: y = max / (x ^ 2) 函数图像(来自google): y = 100 / x ^ (-2) 其中y为随机结果,max为最大值且max>1,x为随机数, 两个参数: ...
- PostMan的使用注意事项
1json格式要设置头尾application/json 2body中raw的{"userName":"123","passWord":&q ...
- threading.local的作用?
threading.local()这个方法的特点用来保存一个全局变量,但是这个全局变量只有在当前线程才能访问,如果你在开发多线程应用的时候 需要每个线程保存一个单独的数据供当前线程操作,可以考虑使用 ...
- QMessageBox简单使用
首先要调用 #include <QMessageBox> 然后 QMessageBox msgBox; msgBox.setWindowTitle("错误"); msg ...
- 图形用户界面(GUI)事件监听机制——窗体事件Frame
窗体事件.Button的使用 本事例给出一个窗体的定义方法,基本属性设置,给窗体添加退出按钮,让按钮具备退出的功能.熟悉监听器的使用 按钮就是事件源. 那么选择哪一个监听器呢? 通过关闭窗体事例了解到 ...
- java网络爬虫爬虫小栗子
简要介绍: 使用java开发的爬虫小栗子,存储到由zookeeper协调的hbase中 主要过程是模拟Post请求和get请求,html解析,hbase存储 源码:https://github.com ...
- <开源项目分析>Cisco的开源视频加解码器THOR(H.264解码)
原创博客,转载请联系博主! 题外话:自学了快两个月的Perl语言,本来打算写两篇基础介绍的博文来科普一下一些小技巧,但是仔细想想还是没有必要了吧,毕竟现在无论是在用Perl5还是Perl6的人都是小众 ...
- Luogu-2521 [HAOI2011]防线修建
倒过来处理所有询问,就变成了一道动态凸包的裸题 吐槽一下这道题只要维护上凸壳就好了,我zz了没好好看题打了两个2333 // luogu-judger-enable-o2 #include<se ...
- [转] 在Mac上搭建React Native开发环境
原文链接: http://blog.csdn.net/xiangzhihong8/article/details/53914336 概述 前面我们介绍过在window环境下开发React Native ...