题目链接

题意 :给你一个字符串,但是空格丢失,问你需要多少次操作能够让这个字符串可以看成合法的逆波兰式,例如12*3*4不是合法的逆波兰式,但是12*34*可以看成1 2*34*是正确的逆波兰式。

思路 :当数字的个数比操作符的个数多的时候显然交换所用的操作次数少,只要把操作符往最后换即可。题目中隐含的意思是12你可以看成1和2也可以看成12,做题的时候注意灵活性。

当操作符的个数比数字的个数多的时候,显然插入数字才是正确的做法,只要往前插入即可。一个合法的逆波兰式的操作符的个数最多是数字的个数-1 。

#include <stdio.h>
#include <iostream>
#include <string.h>using namespace std ;int main()
{int n ;scanf("%d",&n) ;getchar() ;char ch[1100] ;while(n--){scanf("%s",ch) ;int len = strlen(ch) ;int opcnt = 0 ,numcnt = 0;for(int i = 0 ; i < len ; i++){if(ch[i] == '*'){opcnt++ ;}}if(opcnt == 0){printf("0\n") ;continue ;}int cnt = 0 ;//*前边的数字的数量int ans = 0 ;numcnt = len - opcnt ;for(int i = 0 ; i < len ; i++){if(ch[i] == '*'){if(cnt > 1) cnt-- ;//只要前边有数字,*就要一直消耗掉,消耗不掉的看成一个数else{if(numcnt > opcnt)//数字多,*往后换
                    {for(int j = len-1 ; j >= 0 ; j--){if(ch[j] != '*'){swap(ch[i],ch[j]) ;cnt ++ ;ans ++ ;break ;}}}else{ans ++ ;numcnt ++ ;//数不够,插入数字if(cnt == 0)//字符串第一个是*的时候
                        {i -- ;cnt = 1 ;}}}}else cnt ++ ;}printf("%d\n",ans) ;}return 0 ;
}

View Code

转载于:https://www.cnblogs.com/luyingfeng/p/4039797.html

ZOJ 3829 Known Notation(贪心)相关推荐

  1. ZOJ 3829 Known Notation(贪心)题解

    题意:给一串字符,问你最少几步能变成后缀表达式.后缀表达式定义为,1 * 1 = 1 1 *,题目所给出的字串不带空格.你可以进行两种操作:加数字,交换任意两个字符. 思路:(不)显然,最终结果数字比 ...

  2. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  3. ZOJ 3822 Known Notation(2014牡丹江Regional K题)

    题目大意:给你一个不完整的后缀表达式和两种操作,一是插入一个数或者"*"运算号,另一个是把数字和"*"交换. 一个*至少对应两个数字,而一个表达式又等于一个数字 ...

  4. POJ 1862 amp; ZOJ 1543 Stripies(贪心 | 优先队列)

    题目链接: PKU:http://poj.org/problem?id=1862 ZJU:http://acm.zju.edu.cn/onlinejudge/showProblem.do?proble ...

  5. ZOJ 3826 Hierarchical Notation 模拟

    模拟: 语法的分析 hash一切Key建设规划,对于记录在几个地点的每个节点原始的字符串开始输出. . .. 对每一个询问沿图走就能够了. .. . Hierarchical Notation Tim ...

  6. zoj 2343 Robbers 【贪心】

    题意: 给你n个金币,然后m个人,每个人有理论的分配份额.但是金币只能整Robbers个整个分. 问你怎么分才能让金币分配的最合理: 题解: 先按比例,把能分的先都分了,最后剩余的,往余数最大的上面补 ...

  7. linux jq下载文件,linux 之 jq

    1.安装 mac 安装: brew install jq centos 安装: yum install jq ubuntu: 安装: apt-get install jq 2.使用 cat test. ...

  8. ZOJ 1025 Wooden Sticks(快排+贪心)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=25 题目大意:机器运送n个木条,每个木条有一个长度和重量.运送第一根木 ...

  9. zoj 3627(贪心)

    思路:半夜了思路有点混乱wa了好几发.一开始坑定两个人距离为m才能获得最大的收益,所以我们就可以枚举单个端点,当距离达到m时在一同一个方向走这是我们只需要算一下剩下几秒,左右两边贪心去最大的即可. 代 ...

最新文章

  1. 英语计算机工程师求职信,电脑工程师的英文求职信样文
  2. python字符串前加r、f、u、l 的区别
  3. opencv函数findcontours_OpenCV 中的轮廓应用
  4. springboot+thymeleaf+jpa博客多级评论展示案例
  5. wxWidgets:wxSocketBase类用法
  6. PHP微信SDK——Zebra-Wechat
  7. js解码与编码是什么意思?
  8. 《UNIXLinux程序设计教程》一2.1 UNIX 输入输出基本概念
  9. [Leedcode][JAVA][第15题][三数之和][数组][双指针]
  10. JAVA编码 —— 字符串关键字内容替换
  11. windows安装tensorflow GPU
  12. 网上一片红色的中国心,我也来跟随潮流,表达对祖国的热爱!
  13. java jdk运行_java运行机制、Jdk版本及Java环境变量
  14. 机器学习- 吴恩达Andrew Ng Week8 知识总结 Clustering
  15. 测试中存在的弊端及改进建议(面试时会被问到)
  16. 麻省理工公开课:线性代数视频总结(课1-2)
  17. 利用python批量将excel中文翻译成英文
  18. 宝塔自助建站程序源码 网站建设公司必备程序
  19. 新墨斯智能鞋就是您的足底按摩师
  20. SpringBoot集成Redis代码详解,收藏起来

热门文章

  1. 《Java编程思想》学习笔记4——集合容器
  2. 后台开发经典书籍--高性能mysql
  3. mysql创建表对经常要查询的列添加索引或者组合索引
  4. python五十七:str与repr,类似于 java对象中的tostring()方法
  5. Spring Boot中对自然语言处理工具包hanlp的调用详解
  6. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合
  7. 贵州发布大数据发展十方面成果
  8. 我是如何用Worktile进行敏捷开发的
  9. Binder机制(一)
  10. 嵌入式中的 *(volatile unsigned int *)0x500 解释