详细题设请在站内搜索"Jam计数法"  原题中的样例输入和输出分别为

Input:

2 10 5

bdfij

Output:

bdghi

bdghj

bdgij

bdhij

befgh

阿拉伯数字对应拉丁字母 则样例为

input:

2 4 6 9 10

output:

2 4 7 8 9

2 4 7 8 10

2 4 7 9 10

2 4 8 9 10

2 5 6 7 8

这题目一开始我也没太看懂 后来我觉得我应该看懂了 我理解的逻辑体现在以下代码中

python代码实现暴力排列

def getJam(start: int, end: int, len_letters:int, jam_example: str) -> None:letters = list('0abcdefghijklmnopqrstuvwxyz')nums = []jams = []for i in jam_example:nums.append(letters.index(i))maxjam = [i for i in range(end-len_letters+1, end+1)]def IsIncrementalonebyone(x: list[int]) -> bool:for i in range(len(x)-1):if x[i+1] - x[i] == 1:continueelse:return False return Truej = len_letters-1times = 0sep = len_letters-1while times < 5:for i in range(len_letters): #确定连续递增且差值为1的部分if IsIncrementalonebyone(nums[i:len_letters]):sep = i breakwhile sep >= 0:i = len_letters - 1 while i >= sep: #修改连续递增且差值为1的部分 使之达到最大值if nums[i] == maxjam[i]:i -= 1else:nums[i] = nums[i] + 1 jams.append(nums[:])times += 1 if times == 5:breakif times == 5:breaksep -= 1 if sep < 0:times = 5breaknums[sep] += 1 for i in range(sep+1, len_letters):nums[i] = nums[i-1] + 1 jams.append(nums[:])times += 1 if times == 5:breakif times == 5:breakfor i in range(len(jams)):for j in range(len_letters):print(letters[jams[i][j]], end='')print('\n')s,t,w = 2,10,5
jam_example = 'bdfij'
getJam(s,t,w,jam_example)

输出为:

bdghibdghjbdgijbdhijbefgh

和题设吻合 后来我又试了几个 比如

s,t,w = 2,10,3
jam_example = 'bfi'
getJam(s,t,w,jam_example)

输出为

bfjbghbgibgjbhj

还有输出不可能超过五个的情况 比如

s,t,w = 2,10,4
jam_example = 'fgij'
getJam(s,t,w,jam_example)

输出

fhijghij

请大家指出不足和错误

Jam计数 暴力排列法相关推荐

  1. 蓝桥杯题目练习(JAM计数法)

    算法训练VIP JAM计数法 题目描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的 ...

  2. noip2006 JAM计数法 (模拟)

    A1157. JAM计数法 时间限制:1.0s   内存限制:256.0MB   总提交次数:266   AC次数:158   平均分:65.23 将本题分享到:        查看未格式化的试题   ...

  3. 算法训练 JAM计数法

    ALGO-32 JAM计数法 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世 ...

  4. JAM计数法-蓝桥杯

    JAM计数法 1575: JAM计数法 题目描述 输入 输出 样例输入 样例输出 来源/分类 解析 1575: JAM计数法 时间限制: 1 Sec 内存限制: 256 MB 题目描述   Jam是个 ...

  5. [日常] 算法-旋转字符串-暴力移位法

    题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串"abcdef"前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串" ...

  6. make,makefile,cmake“暴力编译法”的个人经验或理解。

    通常我们在本地编译库(opecv.pcl)等我们喜欢使用make -jN  (N代表线程数)这样可以加速编译过程, 但是,这不一定是"线程安全"的,因为当某个线程在编译时,经常其他 ...

  7. 【黑盒测试】 正交排列法设计测试用例

    正交法设计测试用例 如何设计测试用例 一.正交表的概念 二.使用步骤 1.设计步骤 2.案例分析 三.判定表和正交表的使用场景 判定表 正交表 如何设计测试用例 在测试时,要考虑一些控件的组合情况,组 ...

  8. 正交排列法、正交试验设计、正交表

    正交排列法.正交试验设计 正交排列法能够使用最小的测试过程集合获得最大的测试覆盖率,当可能的输入数据或输入数据的组合数量很大时,由于不可能为每个输入组合都创建测试用例,可以采用这种方法. 正交试验设计 ...

  9. 【算法-Java实现】 换钱的方法数(暴力递归法)

    [算法-Java实现] 换钱的方法数(暴力递归法) 文章目录 [算法-Java实现] 换钱的方法数(暴力递归法) 一.问题描述: 二.问题解答: **举例:** **思路:==暴力递归==** 三.算 ...

最新文章

  1. Kibana:分析及可视化日志文件
  2. 网络营销助力之下国内可穿戴设备市场进一步打开迎来发展机遇
  3. 使用Python增加csdn的访问量
  4. linux中的和,|和||
  5. Matlab 预防性维修,使用 MATLAB 进行预测性维护简介
  6. 简析EDMX文件的构成 - CSDL、SSDL、MSL
  7. 持有1000枚比特币及以上的地址数量创历史新高
  8. 如何解决2345看图王无法显示PSD缩略图?
  9. 微信小程序获取手机号和OPENID
  10. 【美少女】阿里巴巴实习三个月总结
  11. MySQL 安全审计、容灾备份、数据恢复
  12. html style设置靠右,css怎么设置右对齐
  13. matlab 分数阶的预估校正算法及实现
  14. 诚之和:裁员、关店,贝壳内部正在发生一场博弈?
  15. 2021年,第一份值得职场人“跪读”的书单来了
  16. 一文看懂多模态大型语言模型GPT-4
  17. uc同步登陆同步退出
  18. WebDAV之葫芦儿·派盘+Xplore
  19. 上位机程序,上位机界面开发,ATECLOUD中国人自己的LabVIEW
  20. Kurento 第一坑

热门文章

  1. WIN10下Visual Studio 2012的安装
  2. ubuntu安装opencv无法下载IPPICV的问题 ippicv_2020_lnx_intel64_20191018_general.tgz
  3. 字节23届校招薪资出炉!技术岗年薪最高76万
  4. UNI-APP,plus.runtime.openURL打开手机自带浏览器,出现“下载地址不可用,创建任务失败”的Bug
  5. 基坑 matlab,基于目标函数MATLAB优化基坑降水的井群设计
  6. 利用谷歌学术搜索生成规范的文献引用
  7. 代码越写越乱?那是因为你没用责任链!
  8. 右键压缩包,没有WinRAR解压选项,怎么办?
  9. 生成对抗网络的背景与意义_生成对抗网络的意义
  10. 道德哲学中的电车问题