sicily 1544 Integer Generator
来源:互联网 发布:ecshop的app源码 编辑:程序博客网 时间:2024/06/05 09:13
数位
题意:
给你一个数位系统(0到9),然后给你一个数串.判断其是否合法(含有数位系统没有的字符即是不合法,或者有前导0).
如果合法的话,输出其这个数串在这个数位系统的下一个数串
数据范围:
数位系统size<=10
数串长度未知
思路:
判断合不合法很容易,关键是这个下一个子串是怎么理解.
样例给了很多提示,数位系统是1,数串是1.那答案是11.如果按一进制去理解,1和11应该是同一个东西
还有,数位系统是987654321,数串是999,下一个居然是1000,而不是998,也就是说数位系统每个字符的权值是按照1到9这样.所以我们应该这样理解,数串在数位系统的排列,是以长度为第一关键字,以字典序为第二关键.并且如果数位系统含有0,那么长度要变长的时候,将添加次小的字符,像999变成1000.(如果数位系统只有0怎么办,这样的话数串肯定是不合法,要么有前导0,要么有数位系统没有的字符,到这里才明白这题为什么要这样出)
算法过程可以这样.先对数位系统从新排序,然后从后往前扫数串,如果发现不是最大的字符的话,就把它变成当前字符的下一个字符,然后后面的全部置为最小的字符.如果找不到,那么全部的字符也变成最小的字符,然后在前面添加一个最小的字符,如果最小的字符是0,那么添加次小的字符
题意:
给你一个数位系统(0到9),然后给你一个数串.判断其是否合法(含有数位系统没有的字符即是不合法,或者有前导0).
如果合法的话,输出其这个数串在这个数位系统的下一个数串
数据范围:
数位系统size<=10
数串长度未知
思路:
判断合不合法很容易,关键是这个下一个子串是怎么理解.
样例给了很多提示,数位系统是1,数串是1.那答案是11.如果按一进制去理解,1和11应该是同一个东西
还有,数位系统是987654321,数串是999,下一个居然是1000,而不是998,也就是说数位系统每个字符的权值是按照1到9这样.所以我们应该这样理解,数串在数位系统的排列,是以长度为第一关键字,以字典序为第二关键.并且如果数位系统含有0,那么长度要变长的时候,将添加次小的字符,像999变成1000.(如果数位系统只有0怎么办,这样的话数串肯定是不合法,要么有前导0,要么有数位系统没有的字符,到这里才明白这题为什么要这样出)
算法过程可以这样.先对数位系统从新排序,然后从后往前扫数串,如果发现不是最大的字符的话,就把它变成当前字符的下一个字符,然后后面的全部置为最小的字符.如果找不到,那么全部的字符也变成最小的字符,然后在前面添加一个最小的字符,如果最小的字符是0,那么添加次小的字符
总结:从后往前扫,把最大字符的为置为最小字符,出现非最大字符则+1,退出循环.全部为最大则在最前面添加一个最小非零的字符
0 0
- sicily 1544 Integer Generator
- sicily--1325. Digit Generator
- sicily 1325. Digit Generator
- Sicily 1325. Digit Generator
- [sicily]1325. Digit Generator
- sicily 1325. Digit Generator
- Sicily 1325. Digit Generator
- Sicily 1020 Big Integer
- sicily 1020 Big Integer
- Sicily.1020. Big Integer
- Sicily 1020. Big Integer
- sicily 1020. Big Integer
- Sicily 1020. Big Integer
- Sicily 1020 Big Integer
- sicily 1020.Big Integer
- sicily 7974. Integer Lists
- Sicily 1020. Big Integer
- sicily 1020 Big Integer
- 黑马程序员——基础知识——功能流
- 使用/dev/kmem读取内核变量的值
- 剪刀石头布(完整版) 借鉴
- codeforces 585C题解
- Maven中常用命令简介与区别
- sicily 1544 Integer Generator
- 深入理解计算机系统-读书笔记(1)
- RMI server不能获取client对象解决
- VS2010下安装和使用boost库
- 好奇怪的模型和表结构
- HBase-scan API 通过scan读取表中数据
- 最短路系列
- 使用Swith遇到的问题
- 【译】17个提升iOS开发效率的必用工具