永发信息网

求noip2006 noip jam数字 的详细讲解。这题本人不会,求一讲解,及C语言的示例代码。谢谢。

答案:2  悬赏:10  手机版
解决时间 2021-02-23 13:50
问题描述】
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【输入文件】
输入文件counting.in 有2行,第1行为3个正整数,用一个空格隔开:
s t w
(其中s为所使用的最小的字母的序号,t为所使用的最大的字母的序号。w为数字的位数,这3个数满足:1≤s第2行为具有w个小写字母的字符串,为一个符合要求的Jam数字。
所给的数据都是正确的,不必验证。
【输出文件】
输出文件counting.out 最多为5行,为紧接在输入的Jam数字后面的5个Jam数字,如果后面没有那么多Jam数字,那么有几个就输出几个。每行只输出一个Jam数字,是由w个小写字母组成的字符串,不要有多余的空格。
【输入样例】
2 10 5
bdfij
【输出样例】
bdghi
bdghj
bdgij
bdhij
befgh
最佳答案
搜索:
#include
#include
#include
#define Max(a,b) a>b?a:b
using namespace std;
int s[30];
int l,r,n;
int sum=0;
void dfs(int j){
int i;
if(j>n){//位数达到要求
if(sum>0){//sum==0时搜索结果是输入的那个数,舍去
for(i=1;i<=n;i++)
printf("%c",char(s[i]+'`'));
cout< }
sum++;
if(sum==6) exit(0);//输出5个数后结束程序
return;
}
if(sum>0) s[j]=s[j-1];//强制保证下一位大于该位(原数除外)
for(i=s[j]+1;i<=r;i++){
s[j]=i;
dfs(j+1);
}
}
int main(){
int i,j;
char c;
scanf("%d%d%d",&l,&r,&n);
for(i=1;i<=n;i++){
cin>>c;
s[i]=c-'a';
}
dfs(1);//从低位开始搜索
return 0;
}
只有c++的代码
全部回答
支持一下感觉挺不错的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
普宁寺上客堂(西南门)在哪里啊,我有事要去这
草原:大自然的冷静之作 文章开头引用歌词有何
民办学历在单位中认可吗?
你和狗熊站在一起打一动物
爸爸过生日送什么花最好
给正常小狗实施垂体切除手术后,短期内小狗血
口袋怪物xy tyrant 和amaura哪知好
求些好看的搞笑的韩综
恭敬近义词是什么
苹果6ios9.1自带软件总共占多少内存
蛮王,,贾克斯对打谁能赢
血府逐瘀汤的组成中含有A.川芎、赤芍、当归、
蚌董这个地址在什么地方,我要处理点事
金属板材屋面檐口挑出墙面的长度不应小于以下
新打了一个星期的耳洞 多久会合?
推荐资讯
蜀汉酒店小卖部在什么地方啊,我要过去处理事
十字绣装框地址在哪,我要去那里办事
【fish find give中的i读音不同的单词是哪个?
嵩明顺安印刷地址在哪,我要去那里办事
千年舟饰材专卖NO.33011这个地址在什么地方,
质量为m的物体静止在倾角为θ的斜面上,现在
买房子写2个人的名字 贷款的利息会比一个人高
现代瑞纳5档100麦发动机转数3000转正常吗
125字的英雄人物故事
表示很自然的样子,如什么如什么
2015版人民币88888连号值多少钱
有关乐谱的词语
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?