1140 Jam的计数法 2006年NOIP全国联赛普及组

Jam是个喜欢标新立异的科学怪人。他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩。在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字母按原先的顺序,排在前面的字母小于排在它后面的字母。我们把这样的“数字”称为Jam数字。在Jam数字中,每个字母互不相同,而且从左到右是严格递增的。每次,Jam还指定使用字母的范围,例如,从2到10,表示只能使用{b,c,d,e,f,g,h,i,j}这些字母。如果再规定位数为5,那么,紧接在Jam数字“bdfij”之后的数字应该是“bdghi”。(如果我们用U、V依次表示Jam数字“bdfij”与“bdghi”,则U<V< span>,且不存在Jam数字P,使U<P<V< span>)。你的任务是:对于从文件读入的一个Jam数字,按顺序输出紧接在后面的5个Jam数字,如果后面没有那么多Jam数字,那么有几个就输出几个。

样例输入 Sample Input

2 10 5

bdfij

样例输出 Sample Output

bdghi

bdghj

bdgij

bdhij

befgh

看样例:{b,c,d,e,f,g,h,i,j}

这个i,j不能向后移了;

所以 只能f向前移,构成新的jam数

题目分析:

{b,c,d,e,f,g,h,i,j};-àbdghi

i还可以向后移于是

{b,c,d,e,f,g,h,i,j};-àbdghj

j不能移动了 所以h向后移

{b,c,d,e,f,g,h,i,j};-àbdgij

ij都不能后移了 所以向后移

{b,c,d,e,f,g,h,i,j};-àbdhij

hij后移不动了 于是找d向后移;

{b,c,d,e,f,g,h,i,j};-àbefgh

题目只让找五个 所以输出五个,

如果不够就有几个输出几个。//其实数据都是比五个要多的

以上只是一个基本思路

来看代码(不是我自己想的(*^__^*) )

#include<bits/stdc++.h>

using namespace std;

int s,t,w,sum=0,k;

int main()

{

string s1;

cin>>s>>t>>w>>s1;

while (sum<5)

{

for(int i=w-1;i>=0;i--) //循环

{

k=s1[i]-‘a‘+w-i;  //判断,从后向前找这个字母和它后面字母

//之间是否有其他的字母 有的话就可以后移

if(k<t)  //如果没有就是10

{

s1[i]=s1[i]+1; //先将 比上一个串小的那个字母后移一位

for(int j=i+1;j<w;j++)//紧接着后面的字母都加一位

s1[j]=s1[j-1]+1;

sum++;

cout<<s1<<endl;

break;//串找到后跳出for

}

}

}

return 0;

}

时间: 2024-08-07 17:02:40

1140 Jam的计数法 2006年NOIP全国联赛普及组的相关文章

1154 能量项链 2006年NOIP全国联赛提高组 codevs

1154 能量项链  2006年NOIP全国联赛提高组 codevs 题目描述 Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记.因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量.如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量

1143 纪念品分组 2007年NOIP全国联赛普及组

1143 纪念品分组 2007年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作.为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数.为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少. 你的任务是写一个程序

洛谷 P1980 记数问题 2013年NOIP全国联赛普及组

3291 记数问题 2013年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解题目描述 Description试计算在区间1到n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如,在1到11中,即在1.2.3.4.5.6.7.8.9.10.11中,数字1出现了4次. 输入描述 Input Description输入共1行,包含2个整数n.x,之间用一个空格隔开. 输出描述 Output Description输出共1行,包含一个整

codevs 1102 采药 2005年NOIP全国联赛普及组

1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB gold 题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到

【1083】code[vs] 1083 Cantor表 1999年NOIP全国联赛普及组

嘿嘿嘿,又是一发水题…… [传送门]:http://codevs.cn/problem/1083/ >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>原题>>>>>>>>>>>>>>>>>>>>

1102 采药 2005年NOIP全国联赛普及组

1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩

1010 过河卒 2002年NOIP全国联赛普及组codevs

1010 过河卒  2002年NOIP全国联赛普及组codevs 题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点.例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C).卒不能通过对方马的控制点. 棋盘用坐标表示,A 点(0,0).B 点(n,m)(n,m 为不超过 20 的整数,并由键盘输入),同样马

1008 选数 2002年NOIP全国联赛普及组

1008 选数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它们的和为: 3+7+12=22 3+7+19=29 7+12+19=38 3+12+19=34. 现在

火星人 2004年NOIP全国联赛普及组

题目描述 Description 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答. 火星人用一种非常简单的方式来表示数字--掰手指.火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为1,2,3--.火星人的任意两根手指都能随意交换位