HDU-4192-Guess the Numbers

2023-05-16

在这里插入图片描述
地址:http://acm.hdu.edu.cn/showproblem.php?pid=4192
思路:首先将中缀表达式转为后缀表达式,然后将数组全排列取计算每一个排列的后缀表达式的值即可

Code:

#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;

int n;
int d[55];
stack<string> sta;

string transform(string s){
	string ss="",si;
	int len=s.size();
	while(!sta.empty()){
		sta.pop();
	}
	for(int i=0;i<len;)
	{
		si=s[i++];
		if(si.size()==1&&(si=="+"||si=="-"||si=="*"||si=="/"||si=="("||si==")")){
			if(si==")"){
				if(sta.top()!="("){
					ss=ss+sta.top();	sta.pop();
				}
				sta.pop();
			}else{
				if((si=="+"||si=="-")&&!sta.empty()&&(sta.top()=="+"||sta.top()=="-")){
					ss=ss+sta.top();	sta.pop();
				}
				sta.push(si);
			}
		}else{
			ss=ss+si;
			if(!sta.empty()&&(sta.top()=="*"||sta.top()=="/")){
				ss=ss+sta.top();	sta.pop();
			}
		}

	}
	if(!sta.empty()){
		ss=ss+sta.top();	sta.pop();
	}
	return ss;
}

int calculate(string s){
	int t=0,a,b;
	stack<int> stai;
	for(int i=0;i<s.size();++i)
	{
		if(s[i]>='a'&&s[i]<='z'){
			stai.push(d[t++]);
		}else{
			b=stai.top();	stai.pop();
			a=stai.top();	stai.pop();
			if(s[i]=='+')	a+=b;
			else if(s[i]=='-')	a-=b;
			else if(s[i]=='*')	a*=b;
			else a/=b;
			stai.push(a);
		}
	}
	return stai.top();
}

int main()
{
	int ans;
	string s,ss;
	while(cin>>n&&n){
		for(int i=0,x;i<n;++i)
		{
			cin>>x;
			d[i]=x;
		}
		cin>>ans>>s;
		ss=transform(s);
		int m=1;
		for(int i=1;i<=n;++i)
			m*=i;
		string res="NO";
		while(m--){
			if(calculate(ss)==ans){
				res="YES";	break;
			}
			next_permutation(d,d+n);
		}
		cout<<res<<endl;
	}
	
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDU-4192-Guess the Numbers 的相关文章

随机推荐

  • LeetCode-3.无重复字符的最长子串

    地址 xff1a https leetcode cn com problems longest substring without repeating characters 思路 xff1a 可以直接暴力枚举子串左端点 xff0c 也可以枚
  • android dmp文件解析,用minidump_stackwalk分析dmp文件失败

    我使用的是macOS 10 13 6 我成功把crash文件抓取到本地并且本地编译了minidump stackwalk xff0c 但是使用工具的时候 xff0c terminal会报很多错误 xff0c 用google搜索也找不到答案
  • 计算机科学中的抽象包括数据抽象和,抽象化 (计算机科学)

    在计算机科学中 xff0c 抽象化 英语 xff1a Abstraction 是将数据与程序 xff0c 以它的语义来呈现出它的外观 xff0c 但是隐藏起它的实现细节 抽象化是用来减少程序的复杂度 xff0c 使得程序员可以专注在处理少数
  • C语言字符串strcat能嵌套吗,c语言strcat()方法如何连接字符串

    c语言strcat 方法如何连接字符串 需要引入的头文件 xff1a include strcat 方法定义 xff1a char strcat char dest const char src strcat 函数 xff1a strcat
  • 安装完mysql 不知道账号密码_Navicat for MySQL安装之后不知道登录密码

    1 xff0c 关闭你现在正在运行的mysql数据库 xff0c 关闭mysql服务器 2 xff0c 关闭数据库后 xff0c 运行点击开始运行 xff0c 输入cmd进入命令行窗口 xff0c 在这个命令行中操作进入到你数据库所在的安装
  • VNC-Ros-kinetic 镜像构筑

    VNC Ros kinetic 镜像 鉴于某些服务器的特殊要求 xff0c rviz图像无法穿透X11显示 xff0c 特此构建基于 ros knetic vnc 镜像的docker容器镜像 amp 记录其构筑过程 docker 安装 am
  • python 爬取财经新闻_金融财经新闻的文本爬取

    大家一定还记得 金融数据的获取 一个爬虫的简单例子 这篇文章中介绍的爬虫思想和方法吧 看过之后 xff0c 大多数人都会有这样的感受 xff0c 虽然爬虫的原理比较简单 xff0c 但是正则表达式却很难写 对于每个页面内容的爬取 xff0c
  • 转换文档服务器不能连接,出口收汇核销网上报审系统一直都无法与服务器建立连接.pdf...

    1 冯 诺依曼计算机的基本原理是 A 程序外接 B 逻辑连接 C 数据内置 D 程序存储 2 目前各部门广泛使用的人事档案管理 财务管理等软件 按计算机应用分类 应属于 A 实时控制 B 科学技计算 C 计算机辅助工程 D 数据处理 3 数
  • 友善串口助手使用教程_【STM32Cube】(十一)使用ADC读取气体传感器数据(MQ-2)...

    现在人工智能非常火爆 xff0c 一般的教程都是为博硕生准备的 xff0c 太难看懂了 xff0c 分享一个非常适合小白入门的教程 xff0c 不仅通俗易懂而且还很风趣幽默 xff0c 点 这里 进入传送门 61 61 61 61 我是华丽
  • make命令

    目录 1 一个简单 makefile例子 2 make指令参数 2 1 make f filename 2 2 make C M 61 代码变成可执行文件 xff0c 叫做编译 xff08 compile xff09 xff1b 先编译这个
  • 相机成像原理

    目录 1 相机成像原理说明 2 相机成像过程 2 1 世界坐标系 gt 相机坐标系 2 2 相机坐标系 gt 图像坐标系 2 3 图像坐标系 gt 像素平面坐标系 3 单点无畸变的相机成像模型 近期项目需进行单目测距 及像素坐标与实际物理距
  • 摄像机几何

    目录 1 摄像机坐标系下的三维点至像素坐标系的映射 2 齐次坐标 3 齐次坐标系中的投影变换 4 摄像机偏斜 1 摄像机坐标系下的三维点至像素坐标系的映射 这里将的焦距为摄像机的焦距 真实世界里我们得到的是数字图像 xff08 以像素为单位
  • ubuntu文件夹映射至win10网络盘符

    为了使用方便 xff0c 将服务器数据文件夹映射至本地网络盘符 映射后本机win10上我的电脑 xff0c 结果如下 xff1a 分为两个步骤 xff1a 1 ubuntu服务器配置 step1 安装 samba samba 是在Linux
  • 场景解析和语义分割区别_语义分割概念及应用介绍

    摘要 xff1a 一份关于语义分割的基本概述 xff0c 涵盖语义分割的特征和可能的用途 xff0c 包括地质检测 自动驾驶 面部识别等 近年来 xff0c 以深度学习为中心的机器学习技术引起了人们的关注 比如自动驾驶汽车已经逐渐成为可能
  • OVN-软件定义网络(一)

    前言 测试环境是用github上开源代码搭建 编译完成后进行如下操作 环境配置 控制节点 创建逻辑交换机 ovn nbctl db 61 unix run openvswitch ovnnb db sock ls add ly ls 在逻辑
  • openstack和ovn架构

  • vnc全屏界面怎么设置小,修改VNC分辨率大小

    1 第一种方法 xff1a 使用geometry参数进行调整 使用man命令获得关于geometry参数的描述 root 64 secdb man vncserver geometry widthxheight Specify the si
  • vassonic PHP,VasSonic

    VasSonic取名于索尼动画形象音速小子 xff0c 是腾讯QQ会员 VAS团队研发的一个轻量级的高性能的Hybrid框架 xff0c 专注于提升页面首屏加载速度 xff0c 完美支持静态直出页面和动态直出页面 xff0c 兼容离线包等方
  • ubuntu如何查看网卡名称_【整理】Ubuntu/Linux下如何查看无线网卡的具体型号

    整理 Ubuntu Linux下如何查看无线网卡的具体型号 目的 为了重新安装正确的无线网卡的驱动 xff0c 所以要先弄清楚我的笔记本上的无线网卡的具体的型号 过程 打开终端 xff0c 用如下命令 方法查看 xff1a 1 ifconf
  • HDU-4192-Guess the Numbers

    地址 xff1a http acm hdu edu cn showproblem php pid 61 4192 思路 xff1a 首先将中缀表达式转为后缀表达式 xff0c 然后将数组全排列取计算每一个排列的后缀表达式的值即可 Code