当前位置: 首页 > news >正文

HDU 6342 Expression in Memories(模拟)多校题解

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

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

下面的讲解问号只改为+或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] = '+';
                else
                    s[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

相关文章:

  • eclipse 更换国内镜像
  • @angular/forms 源码解析之双向绑定
  • C# 获取电脑的网络连接状态
  • leetcode 有效的字母异位词 java 版本
  • memset函数,strcpy函數,memcp函數
  • 老司机 iOS 周报 #30 | 2018-08-06
  • 机器学习 -- 机器学习是什么?
  • TCP三次握手四次挥手手动实践
  • 初识 Spring(05)---(Annotation注解)
  • win7系统已经够用为什么还要开发win10系统
  • python3 简单爬虫
  • HAP将新的页面加入到菜单
  • 常用的CSS各类属性
  • 从计算机知识到落地能力,你欠缺了什么?
  • 阿里云王牌架构师杨曦:N多环境N多应用个性配置管理如何从混乱到简单?
  • CentOS7简单部署NFS
  • FastReport在线报表设计器工作原理
  • HomeBrew常规使用教程
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Mysql优化
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • php ci框架整合银盛支付
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SpriteKit 技巧之添加背景图片
  • vue-router 实现分析
  • Webpack 4x 之路 ( 四 )
  • 机器学习学习笔记一
  • 技术胖1-4季视频复习— (看视频笔记)
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 一个SAP顾问在美国的这些年
  • #考研#计算机文化知识1(局域网及网络互联)
  • $.ajax()方法详解
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (6)设计一个TimeMap
  • (70min)字节暑假实习二面(已挂)
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (二)PySpark3:SparkSQL编程
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (新)网络工程师考点串讲与真题详解
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)Neo4j下载安装以及初次使用
  • (转)四层和七层负载均衡的区别
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .net6Api后台+uniapp导出Excel
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [] 与 [[]], -gt 与 > 的比较
  • [2669]2-2 Time类的定义
  • [C#]winform部署yolov9的onnx模型
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!