博客
关于我
【模拟】ZOJ Problem Set - 3490 String Successor
阅读量:623 次
发布时间:2019-03-14

本文共 1805 字,大约阅读时间需要 6 分钟。

ZOJ Problem Set - 3490 String Successor(字符串模拟)

这是一道比赛题,我们队里有小伙伴参加。他一开始对题意理解得不太透彻,花了半小时才大概明白意思。可以说他的理解能力还有提升的空间。

后来他自己开始思考代码,虽然尝试了一段时间,但因为思路不够清晰,最后没能顺利完成,选择放弃。看到其他队友都解决了这道题,他感到有些嫉妒,意识到自己的代码能力还有待提高。

比赛结束后,他重新回到代码,继续努力解决这个问题。经过一段时间的琢磨,他终于完成了代码提交。然而,由于匆忙,忘记了案例中的特殊处理,导致第一次提交失败。幸运的是,第二次提交时终于通过了,看到Accepted的结果让他感到无比欣喜。

这次经历让他明白,编程不仅需要扎实的技术功底,更需要细心和耐心。以后遇到问题时,不要再轻易放弃,要勇于多次尝试,直到找到最优的解决方案。

题目大意:

这道题有两种主要情况:第一种情况是字符串中包含数字和字母。我们需要忽略所有非数字字母,只关注数字字母。每次将最后一个数字字母加一,当进位发生时,需要处理。具体来说,当遇到非字母字符时,需要像案例2那样处理进位。如果后面没有数字字符,就像案例2那样产生进位。第二种情况是字符串中全是非数字字母。这种情况下,最后一位会加一,直到出现数字字符为止,此时会进入第一种处理方式。

AC代码:

#include 
#include
#include
#include
#include
#include
using namespace std;char a[101];int n;int add(int point1) { int pan = 0; point1++; int len = point1; while (point1) { point1--; if (isalnum(a[point1])) { pan = 0; a[point1]++; if (a[point1] == 'z' + 1) { a[point1] = 'a'; pan = 1; } else if (a[point1] == 'Z' + 1) { a[point1] = 'A'; pan = 1; } else if (a[point1] == '9' + 1) { a[point1] = '0'; pan = 1; } if (pan == 0) break; } } if (pan) { int flag = 0; char cmp1, cmp2; for (int i = 0; i <= len - 1; i++) { if (isalnum(a[i]) && flag == 0) { cmp1 = a[i]; if (a[i] == '0') a[i] = '1'; flag = 1; } if (flag) { cmp2 = a[i + 1]; a[i + 1] = cmp1; cmp1 = cmp2; } } a[len + 1] = '\0'; }}int main() { int t; scanf("%d", &t); while (t--) { memset(a, 0, sizeof(a)); scanf("%s", a); scanf("%d", &n); int len = strlen(a); int pan = 1; for (int i = 0; i < len; i++) { if (isalnum(a[i])) { if (a[i] == '9') { a[i] = '0'; pan = 1; } else if (a[i] < '9') { a[i]++; pan = 0; } } } if (pan) { int flag = 0; char cmp1; for (int i = 0; i < len; i++) { if (isalnum(a[i])) { cmp1 = a[i]; if (a[i] == '0') a[i] = '1'; flag = 1; } if (flag) { a[i + 1] = cmp1; } } a[len] = '\0'; } }}

转载地址:http://cwaoz.baihongyu.com/

你可能感兴趣的文章
一级导数和二级导数的意义
查看>>
线性回归之最小二乘法(高斯-马尔可夫定理)
查看>>
ToolBar组件的使用
查看>>
Android之知识总结
查看>>
RabbitMq下载和安装linuxcenteros安装
查看>>
EasyUI的简单介绍
查看>>
jquery+easyui+datagrid 排序
查看>>
xutil3网络框架
查看>>
android全方位性能优化方法
查看>>
git 学习笔录
查看>>
引导界面滑动导航 + 大于等于1页时无限轮播 + 各种切换动画轮播效果
查看>>
Idea代码统计工具
查看>>
官网Tensorflow 移动开发流程
查看>>
python基础字符串(二)
查看>>
python 安装scikit-learn遇到的问题解决方案
查看>>
HTTP 错误 500.21 - Internal Server Error 发布网站遇到这个错误
查看>>
微信小程序:出现脚本错误或者未正确调用 Page()错误解决
查看>>
微信小程序:页面json文件错误
查看>>
海外引流怎么做?巨象指纹浏览器助你,人人都是产品经理
查看>>
Android获得缩略图的代码注释
查看>>