栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3490 String Successor

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3490 String Successor

#include <iostream>#include <cstring>#include <cstdio>#include <cmath>#include <algorithm>#include <cassert>using namespace std;struct Str{char* str;int size;bool have;int sp;Str(char* s){str = s;size = strlen(str);reverse(str, str + size);have = checkHave();sp = 0;}bool checkHave(int i){if (str[i] <= '9' && str[i] >= '0') return 1;if (str[i] <= 'z' && str[i] >= 'a') return 1;if (str[i] <= 'Z' && str[i] >= 'A') return 1;return 0;}bool checkHave(){for (int i = 0; i < size; ++i){if (checkHave(i)) return 1;}return 0;}int next(){for (; sp < size; ++sp)if (checkHave(sp)) return sp++;return sp;}int increase(int k){bool carry = false;int ret;if (str[k] <= '9' && str[k] >= '0'){int tmp = (str[k] - '0' + 1); carry = (tmp == 10);str[k] = tmp % 10 + '0';ret = '1';}else if (str[k] <='z' && str[k] >='a'){int tmp = str[k] - 'a' + 1;carry = (tmp == 26);str[k] = tmp % 26 + 'a';ret = 'a';}else if(str[k] <= 'Z' && str[k] >= 'A'){int tmp = str[k] - 'A' + 1;carry = (tmp == 26);str[k] = tmp % 26 + 'A';ret = 'A';}else assert(0);return carry ? ret : 0;}void increase(){if (!have){str[0]++; have = checkHave(0);return ;}sp = 0;int last, now = next();int tmp;while (tmp = increase(now)){last = now;now = next();if (now == size){for (int i = size; i > last; --i)str[i + 1] = str[i];str[last + 1] = tmp;size++;break;}}}void out(){for (int i = size - 1; i >= 0; --i)printf("%c", str[i]);puts("");}};char str[200];int main(){int T;scanf("%d", &T);while (T--){scanf("%s", str);Str object = Str(str);int time;scanf("%d", &time);while(time--){object.increase();object.out();}puts("");}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378637.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号