首页 > 其他分享 >DFS--输出下一个数字

DFS--输出下一个数字

时间:2022-10-26 20:01:42浏览次数:54  
标签:输出 数字 JamJam -- 字母 Pos DFS int Alpha


题目描述

JamJam是个喜欢标新立异的科学怪人。他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩。

在他的计数法中,每个数字的位数都是相同的(使用相同个数的字母),英文字母按原先的顺序,排在前面的字母小于排在它后面的字母。我们把这样的“数字”称为JamJam数字。在JamJam数字中,每个字母互不相同,而且从左到右是严格递增的。每次,JamJam还指定使用字母的范围,例如,从22到1010,表示只能使用{b,c,d,e,f,g,h,i,j}b,c,d,e,f,g,h,i,j这些字母。如果再规定位数为55,那么,紧接在JamJam数字“bdfijbdfij”之后的数字应该是“bdghibdghi”。(如果我们用UU、VV依次表示JamJam数字“bdfijbdfij”与“bdghibdghi”,则U<VU<V,且不存在JamJam数字PP,使U<P<VU<P<V)。

你的任务是:对于从文件读入的一个JamJam数字,按顺序输出紧接在后面的55个JamJam数字,如果后面没有那么多JamJam数字,那么有几个就输出几个。

输入格式

共22行。

第11行为33个正整数,用一个空格隔开:s t wstw (其中ss为所使用的最小的字母的序号,tt为所使用的最大的字母的序号。ww为数字的位数,这33个数满足:1≤s<T≤26, 2≤w≤t-s1≤s<T≤26,2≤w≤t−s )

第22行为具有ww个小写字母的字符串,为一个符合要求的JamJam数字。

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

输出格式

最多为55行,为紧接在输入的JamJam数字后面的55个JamJam数字,如果后面没有那么多JamJam数字,那么有几个就输出几个。每行只输出一个JamJam数字,是由ww个小写字母组成的字符串,不要有多余的空格。

输入输出样例

输入 #1复制


2 10 5 bdfij


输出 #1复制


bdghi bdghj bdgij bdhij befgh


#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>

using namespace std;

int s, t, w;
char S[26];

int Alpha[26];

inline void OutPut() {
for (int i = 1; i <= w; i++) {
printf("%c", Alpha[i] - 1 + 'a');
}
printf("\n");
}

inline void DFS(const int Pos, const int Step){
if (Pos == 0 || Step == 6) {
return;
}
if (Alpha[Pos] < t && Alpha[Pos] < Alpha[Pos + 1] - 1){
Alpha[Pos]++;
for (int i = Pos + 1; i <= w; i++) {
Alpha[i] = Alpha[i - 1] + 1;
}
OutPut();
DFS(w, Step + 1);
}
else {
DFS(Pos - 1, Step);
}
}

int main() {
scanf("%d%d%d", &s, &t, &w);
scanf("%s", S);
for (int t = 1; t <= strlen(S); t++) {
Alpha[t] = S[t - 1] - 'a' + 1;
}
Alpha[w + 1] = 0x3f;
DFS(w, 1);
return 0;
}

 

标签:输出,数字,JamJam,--,字母,Pos,DFS,int,Alpha
From: https://blog.51cto.com/u_13121994/5798306

相关文章

  • 贪心
    Saruman'sArmyTimeLimit: 1000MS MemoryLimit: 65536KTotalSubmissions: 19615 Accepted: 9580DescriptionSarumantheWhitemustleadhisarmyalongastraig......
  • 滑窗法--0与1状态转变
    B.LectureSleeptimelimitpertest1secondmemorylimitpertest256megabytesinputstandardinputoutputstandardoutputYourfriendMishkaandyouattendacalculu......
  • 尼姆博弈
    尼姆博弈:一种在博弈论中有基石作用的策略提醒:接下的分析有点烧脑描述:尼姆博弈是一个两人博弈,2名玩家轮流从数堆物品中拿取一定数量的物品,每次拿取时先选择某一堆,再从中......
  • MySQL 嵌套子查询 with子句 from子查询 in子查询 join组合
    一、适用场景和方法(1)适用场景考虑查询过程中是否存在以下情况:查询某些数据时需要分组才能得到,某些数据不需要分组就能得到或者分组条件不同;查询某些数据时需要where条......
  • 每天都可以见到的人,只有不了解才觉得正常
    罗素先生说得好:人人理应平等。实际上却远不是这样——特别是人与人有知识的差别。——王小波《长虫·草帽·细高挑》孤独恐怕就是,说的话别人迷迷糊糊,思考的问题别人......
  • 贪心--带最少的零钱
    题目描述你就要去购物了,现在你手上有N种不同面值的硬币,每种硬币有无限多个。为了方便购物,你希望带尽量少的硬币,但要能组合出1到X之间的任意值。输入格式第一行两个数X、N,以......
  • py第三方模块
    今日内容概要第三方模块的下载与使用网络爬虫模块之requests模块网络爬虫实战之爬取链家二手房数据自动化办公领域之openpyxl模块第三方模块的扩展(模块叠模块)......
  • 并查集--村村通
    题目描述某市调查城镇交通状况,得到现有城镇道路统计表。表中列出了每条道路直接连通的城镇。市政府“村村通工程”的目标是使全市任何两个城镇间都可以实现交通(但不一定有直......
  • 并查集--同时修路得到的最短时间
    题目背景AA地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车。政府派人修复这些公路。题目描述给出A地区的村庄数NN,和公路数MM,公路是双向的。并告诉你每条公路的连......
  • 链表——两两交换链表中的节点
    #include<iostream>usingnamespacestd;structListNode{ intval; ListNode*next; ListNode(intval):val(val),next(NULL){};};//根据数组创建链表Lis......