c语言复赛jam计数法求解(做出来追加高分)

Jam的计数法

(count.pas/c/cpp)

【问题描述】

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,且不存在Jam数字P,使U<P<V)。你的任务是:对于从文件读入的一个Jam数字,按顺序输出紧接在后面的5个Jam数字,如果后面没有那么多Jam数字,那么有几个就输出几个。

【输入文件】

输入文件counting.in 有2行,第1行为3个正整数,用一个空格隔开:

s t w

(其中s为所使用的最小的字母的序号,t为所使用的最大的字母的序号。w为数字的位数,这3个数满足:1≤s<t≤26, 2≤w≤t-s )

第2行为具有w个小写字母的字符串,为一个符合要求的Jam数字。

所给的数据都是正确的,不必验证。

【输出文件】

输出文件counting.out 最多为5行,为紧接在输入的Jam数字后面的5个Jam数字,如果后面没有那么多Jam数字,那么有几个就输出几个。每行只输出一个Jam数字,是由w个小写字母组成的字符串,不要有多余的空格。

【输入样例】

2 10 5

bdfij

【输出样例】

bdghi

bdghj

bdgij

bdhij

befgh

这个怎么做啊,谁能给个源程序啊,要是没有有采药的源程序也可以,要是都有就谢谢了

这道题挺有趣的,我就做了做,记得给我加分欧

代码:

#include<stdio.h>
bool process(char *a,int end,int length);

int main(void)
{
char first[27];
int begin,end,length;
scanf("%d%d%d",&begin,&end,&length);
//吸收多余空格
getchar();
for(int i=0;i<length;i++)
scanf("%c",&first[i]);
first[length]='\0';
for(i=1;process(first,end,length) && i<=5;i++)
printf("%s\n",first);

return 0;
}

//下面这个函数用来求比传递过来的jam数大一的数
bool process(char *a,int end,int length)
{

bool sth=false;
char *p=a+length-1;
char max='a'+end-1;
for(;;p--,max--)
{
if(*p<max)
{
*p=*p+1;
for(int i=1;*(p+i);i++)
*(p+i)=*p+i;
sth=true;
break;
}
if(p==a) break;
}
return sth;

}
温馨提示:内容为网友见解,仅供参考
无其他回答

c语言复赛jam计数法求解(做出来追加高分)
这道题挺有趣的,我就做了做,记得给我加分欧 代码:include<stdio.h> bool process(char *a,int end,int length);int main(void){ char first[27];int begin,end,length;scanf("%d%d%d",&begin,&end,&length);\/\/吸收多余空格 getchar();for(int i=0;i<length;i++)scanf("%c",&...

C语言编写一个程序,急用!!高分悬赏(正确答案追加分数)
include <stdio.h> include <stdlib.h> include <conio.h> include void Menu();void Plus();void Minus();void Multiply();void Dir();int main(){ int n, flag = 0;while(1){ Menu();do { flag = 0;scanf("%d", &n);switch(n){ case 1: Plus(); break;case 2: Min...

图中找回路 C语言编程 跪求大神帮助 高分悬赏 采纳 追加分数
(1)可以用矩阵表示图 (2)用深入优先(DFS)从任 一顶点v0开始搜索,在搜索过程中标记访问过的顶点和边,如果有某个顶点未访问,且该顶点有一条边与v0相连,即找到一条回路。伪码差不多是这个样子吧。int DFS(Graph G,int vj){ visited[vj]=TRUE;for(vj所有邻接点vi){ if(visited[vi]=FAL...

用c语言把一组小数输出到屏幕上,并且求它们的相加和!答案满意追加最高分...
int main(){ freopen("shuru.txt","r",stdin);\/\/输入文件名为“shuru.txt”可根据需要更改 freopen("shuchu.txt","w",stdout);\/\/输出文件名为“shuchu.txt”可根据需要更改int n,i;double a[10000],sum=0;scanf("%d",&n); for(i=0;i<n;i++) { scanf("%lf",&a[i...

单片机的一份试卷 帮我做出来 高分相送 做出来再追加100分
2、8052单片机片内包含哪些主要逻辑功能部件?8位字长的CPU,最大64KROM,最大64KRAM,4个8位并行I\/O端口,一个全双工串口,2个16位定时计数器。3、若(PSW) =10H,则当前的R0~R7在内部RAM中的哪些单元?10H-17H 指出下列指令中的45H代表什么?( 1 ) MOV A,#45H;立即数 ( 2 ) MOV ...

高分求一段简单C语言代码,满意再追加分数
感觉要用到 GetModuleFileName和ShellExecute这两个函数 没时间。。。

高分求两道大一C语言编程题答案,答对的保证再追加100分
fprintf(fp, "%c", *psz);psz++;} } int main(){ char* pszBuff = ReadFile("Old.txt");if( NULL == pszBuff ) return 0;Sort(pszBuff);free(pszBuff);printf("\\n");} \/ 2.\/ include <stdio.h> include <malloc.h> void input(int array[], int n){ for(int i = ...

C语言下午补考!!急求一些要记的重点、考点…或简明教材!(拒咯嗦、打...
不用紧张,^o^.对3大结构的熟练掌握(顺序,选择,循环),熟练掌握(数组,函数),指针(基础)了解一下,基本上过考试就没问题.

【高分有追加等高手】c语言猜数字游戏,有的功能还实现不了,求助...
void decide(int a[],int b[],int n,int m); \/\/自定义数组 int Rungame();int Mark();int Help();int *p,*q;int u,r,N=4; \/\/定义所需整形函数 int main()

高分求一简单C语言编程 一定要快点 可追加分数
这种问题拿来提问肯定没人答的出. 谁没事还守着电脑帮你敲个C程序出来啊. 看看谭浩强的C程序设计,自己尝试一下吧, 我大概读了一下你的问题, 就是一个算法, 不难的. 祝你早日编写出来..

相似回答