正确代码:

#include <iostream>
#include <algorithm>
using namespace std;
bool IsSame(char a, char b)
{
  if(a<='9'&&a>='0'&&b<='9'&&b>='0')
  {
    return 1;
  }
  else if (a <= 'z' && a >= 'a' && b <= 'z' && b >= 'a')
  {
  return 1;
  }
  return 0;
}
int main(void)
{
  int p1, p2, p3;
  string str, t;
  char k;
  cin >> p1 >> p2 >> p3;
  cin >> str;
  int i = 0, j = 0;
  while (str[i] != '\0')
  {
    if (str[i] != '-')
    {
      cout << str[i];
    }
    else if (str[i] == '-' && i - 1 >= 0 && i + 1 < str.length())
    {
      if (str[i - 1] >= str[i + 1] || !IsSame(str[i-1],str[i+1]))
        cout << str[i];
      else if (str[i - 1] + 1 < str[i + 1] && IsSame(str[i-1],str[i+1]))
      {
        if (p1 == 2 && str[i - 1] <= 'z' && str[i - 1] >= 'a')
        {
          for (k = str[i - 1] + 1;k < str[i + 1];k++)
          {
            for (int x = 0;x < p2;x++)
            {
              t += k - 'a' + 'A';
            }
          }
        }
        else if (p1 == 3)
        {
          for (k = str[i - 1] + 1;k < str[i + 1];k++)
          {
            for (int x = 0;x < p2;x++)
            {
              t += '*';
            }
          }
        }
        else
        {
          for (k = str[i - 1] + 1;k < str[i + 1];k++)
          {
            for (int x = 0;x < p2;x++)
            t += k;
          }
        }
        if (p3 == 2)
        {
          reverse(t.begin(), t.end());
        }
        cout << t;
        t = "";
      }
    }
    else
      cout << str[i];
    i++;
  }
}

错误代码:

#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
int p1, p2, p3;
string str, t;
char k;
cin >> p1 >> p2 >> p3;
cin >> str;
int i = 0, j = 0;
while (str[i] != '\0')
{
if (str[i] != '-')
{
cout << str[i];
}
else if (str[i] == '-' && i - 1 >= 0 && i + 1 < str.length())
{
if (str[i - 1] >= str[i + 1]||str[i - 1]+26<str[i+1])
cout << str[i];
else if (str[i - 1] + 1 < str[i + 1] && str[i - 1]+26>str[i+1])//此处错误
{
if (p1 == 2 && str[i - 1] <= 'z' && str[i - 1] >= 'a')
{
for (k = str[i - 1] + 1;k < str[i + 1];k++)
{
for (int x = 0;x < p2;x++)
{
t += k - 'a' + 'A';
}
}
}
else if (p1 == 3)
{
for (k = str[i - 1] + 1;k < str[i + 1];k++)
{
for (int x = 0;x < p2;x++)
{
t += '*';
}
}
}
else
{
for (k = str[i - 1] + 1;k < str[i + 1];k++)
{
for (int x = 0;x < p2;x++)
t += k;
}
}
if (p3 == 2)
{
reverse(t.begin(), t.end());
}
cout << t;
t = "";
}
}
else
cout << str[i];
i++;
}
}

总结:考虑以下可能:① ---   ,② -a-d- ,③ -1-a- ④ -d-a ,这些是式子不变,直接输出,然而为了排掉 数字 - 字母 ,选择用str[i-1]+26>str[i+1],因为 Asc(9)+26 < Asc(a),Asc(0)+26 > Asc(9) ,因此觉得可以用于判断 数字 - 字母 的组合,但是忽略了 -的ASCII为45 ,Asc(-)+26 > Asc(0),因此 6--0未通过测试

NC16644【字符串的展开】的更多相关文章

  1. AC日记——字符串的展开 openjudge 1.7 35

    35:字符串的展开 总时间限制:  1000ms 内存限制:  65536kB 描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h ...

  2. TYVJ P1053 字符串的展开 Label:字符 水

    背景 NOIP2007年提高组第2道 描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或“4-8”的子串,我们就把它当作一种简 ...

  3. Luogu 1098 - 字符串的展开 - [字符串操作][模拟]

    题目链接:https://www.luogu.org/problemnew/show/P1098 题目描述在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中 ...

  4. 洛谷P1098 字符串的展开【字符串】【模拟】

    题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母或数 ...

  5. C语言 · 字符串的展开

     算法训练 字符串的展开   时间限制:1.0s   内存限制:256.0MB      在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d ...

  6. noip200706字符串的展开

    试题描述: 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母获 ...

  7. 洛谷 P1098 字符串的展开

    题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输出时,用连续递增的字母或数 ...

  8. 洛谷P1098 字符串的展开

    P1098 字符串的展开 题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输 ...

  9. 洛谷——P1098 字符串的展开

    P1098 字符串的展开 题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类似于“d-h”或者“4-8”的字串,我们就把它当作一种简写,输 ...

  10. 洛谷—— P1098 字符串的展开

    https://www.luogu.org/problem/show?pid=1098 题目描述 在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中,含有类 ...

随机推荐

  1. elasticsearch相关概念及常用操作汇总

    背景 我本来是想把我的写的es的平时总结dsl发出来的,但是我发现只搞那个意义大不.干脆多写点吧. 索引的结构化和非结构 我们经常用数据库,当然会经常用到索引. 然后从索引的维度去分析,系统分为结构化 ...

  2. VMware Workstation Pro 16、docker和Mysql相关

    VMware Workstation Pro 16安装参考 docker容器的使用参考 Docker 容器使用 Docker Hub资源 Docker Hub Mysql数据库安装参考 Mysql数据 ...

  3. Codeforces 919E Congruence Equation(循环节+数论)

    Link 题意 给$n, m, p, x$,求有多少个$n(1\leq n \leq x)$使得$n·a^{n}=b(\textrm{mod}\;p)$成立 思路 考虑一下左边的循环节长度,由于$n% ...

  4. Unity3D使用脚本动态创建、调用动画(转)

    原文链接: https://blog.csdn.net/pigautumn/article/details/81781403 需求场景:由若干个数量不确定的物体从上到下排列,需要间隔0.1s依次从左到 ...

  5. 发誓要学会wepack

    9.9 学习资料: http://webpack.wuhaolin.cn/   <深入浅出Webpack> https://github.com/zshno1/wepack-study w ...

  6. SpringBoot 自定义启动的logo(即banner)

    1.自定义输出banner样式 推荐生成网站 http://patorjk.com/software/taag/ https://www.bootschool.net/ascii-art 2.配置 A ...

  7. 【SSO单点系列】(4):CAS4.0 之非Ajax-iframe 登录

    一.描述 不使用Ajax-iframe 登录 仍然要自定义页面 二.思路: 将数据提交给服务器登录页面,服务登录页面自动提交. 三.实现 1.客户端 <form name="login ...

  8. centos7本地yum配置和使用

    1.打开centos的yum文件夹 输入命令cd  /etc/yum.repos.d/ 2.用wget下载repo文件 输入命令wget  http://mirrors.aliyun.com/repo ...

  9. bootstrap table表格按钮

    1 <body> 2 3 <form action="" method="POST" class="form-horizontal& ...

  10. 自己写的java教程,免费分享

    自己写的一套java教程,主要用于内部培训使用,有需要的可以直接免费下载: http://it.zhenzikj.com/download/java.zip 一共写了3套: java语言基础.网络开发 ...