题意:给你一个规则,问你写的对不对。

思路:规则大概概括为:不能出现前导零,符号两边必须是合法数字。我们先把所有问号改好,再去判断现在是否合法,这样判断比一边改一边判断容易想。

下面的讲解问号只改为+或1...

对于(null)0?,+0?,*0?一律只能改为+,否则必是前导零,其他情况问号改为1,判断情况的时候注意一下i的范围,比如i==0时,s[i - 1]越界。

判断对错时对++,(null)+,+(null)符号两边没数字的判错,如果01前是null或者+*判错。

给几个样例:

0??0       0?0?0      01?+0      0?*0

代码:

#include<cstdio>
#include<set>
#include<stack>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int maxn = 560+5;
const int INF = 0x3f3f3f3f;
char s[maxn];
int main(){int T;scanf("%d",&T);while(T--){int flag = 0;scanf("%s",s);int len = strlen(s);for(int i = 0;i < len;i++){if(s[i] == '?'){if(i == 1 && s[i - 1] == '0')   //(null)0?s[i] = '+';else if(i >= 2 && s[i - 1] == '0' && (s[i - 2] == '+' || s[i - 2] == '*'))  //+0?,*0?s[i] = '+';elses[i] = '1';}}for(int i = 0;i < len;i++){if(s[i] == '0' && (s[i + 1] >= '0' && s[i + 1] <= '9' && i < len - 1) && (i == 0 || (s[i - 1] < '0' || s[i - 1] > '9'))){//01前是null或者+*flag = 1;break;}if((s[i] == '*' || s[i] == '+') && (s[i + 1] == '*' || s[i + 1] == '+') && i < len - 1){//++flag = 1;break;}if(s[i] == '+' || s[i] == '*'){if(i == 0 || i == len - 1){ //(null)+,+(null)flag = 1;break;}if(s[i - 1] < '0' || s[i - 1] > '9'){   //++flag = 1;break;}if(s[i + 1] < '0' || s[i + 1] > '9'){   //++flag = 1;break;}}}if(flag) printf("IMPOSSIBLE\n");else printf("%s\n",s);}return 0;
}

转载于:https://www.cnblogs.com/KirinSB/p/9408729.html

HDU 6342 Expression in Memories(模拟)多校题解相关推荐

  1. hdu 5568(dp+大数模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5568 官方题解: #include <cstdio> #include <cstri ...

  2. 【hdu 6342】Expression in Memories

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把所有的问号都改成'1' 然后会发现只有+0?这种情况 需要把?改成+. 看看这样的0后面的1是不是由问号改过来的就好了.是的话 再 ...

  3. 多校第六场 HDU 4927 JAVA大数类+模拟

    HDU 4927 题目大意:给定一个长度为n的序列a,每次生成一个新的序列,长度为n-1,新序列b中bi=ai+1−ai,直到序列长度为1.输出最后的数. 思路:这题实在是太晕了,比赛的时候搞了四个小 ...

  4. HDU 4831 Scenic Popularity 暴力模拟

    Scenic Popularity Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  5. HDU 6015 Colorful Tree(2017多校)

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6035 题意: 给出一颗树, 树上路径权值等于路径上不同颜色的数量,求所有路径权值之和: 解题思路: ...

  6. HDU 6044 Limited Permutation(2017多校)【计数 快速读入挂 线性逆元】

    题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6044 题意: 对于有n个元素的全排列的合法性定义为:有n个区间,对于第i个区间[li,ri]有li& ...

  7. HDU 4121 Xiangqi (算是模拟吧)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4121 题意:中国象棋对决,黑棋只有一个将,红棋有一个帅和不定个车 马 炮冰给定位置,这时当黑棋走,问你黑 ...

  8. HDU Problem - 5935 Car(模拟)

    题目链接 Problem Description Ruins is driving a car to participating in a programming contest. As on a v ...

  9. 【HDU - 5912】Fraction (模拟)

    题干: Mr. Frog recently studied how to add two fractions up, and he came up with an evil idea to troub ...

  10. HDU 2566 统计硬币 【模拟】

    题目链接 Problem Description 假设一堆由1分.2分.5分组成的n个硬币总面值为m分,求一共有多少种可能的组合方式(某种面值的硬币可以数量可以为0). Input 输入数据第一行有一 ...

最新文章

  1. justify-content与align-items解析
  2. 学习笔记2——对象初始化和面向对象特性
  3. Ubuntu14.04下安装wineqq国际版和卸载QQ
  4. Android多点触控MultiTouch浅析
  5. UVA 146 ID Codes
  6. flask处理cookie
  7. stl中copy()函数_std :: rotate_copy()函数以及C ++ STL中的示例
  8. 读取html文件,让其中的内容和notepad打开这个html的样子一样。
  9. eclipse物联网_Eclipse如何推动物联网发展
  10. Insert增加数据
  11. 里面的自带的字典在哪里_自带话放的声卡“秘密”
  12. Python 函数式编程(3) —— 闭包
  13. lodop 小票排版_Lodop打印小票
  14. JAVA项目--银行管理系统
  15. 【一年总结】记我的大一生活
  16. 【工具封装】不用 for 循环, 教你如何向MySQL数据库批量插入数据
  17. 网易微专业java高级笔记_网易微专业java高级开发工程师
  18. Listener method could not be invoked with the incoming messageEndpoint handler details:Method
  19. 【国庆献礼】浅谈国产数据库
  20. FBX导入错误 :ImportFBX Errors:

热门文章

  1. 使用util.js处理列表
  2. 【渝粤教育】国家开放大学2018年秋季 2080T现代教育思想 参考试题
  3. 【渝粤教育】国家开放大学2018年秋季 2707T种植业基础 参考试题
  4. 【Python实例第31讲】递归的特征消除法
  5. Pytesseract-windows安装及初步使用
  6. scrapy下载图片第一波
  7. [转]关于computer vision的会议及vision guys
  8. node-7.2.1 already installed, it's just not linked
  9. sql系列(基础篇)-第一章 关于sysdate
  10. OSI七(八)层结构 TCP/IP 4层结构