算法创作|调手表问题解决方法

问题描述小明买了块高端大气上档次的电子手表,他正准备调时间呢。在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前的数是 n - 1,按一次后会变成 0 。作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时间多1,则要按 n - 1 次加一按钮才能调回正确时间。小明想,如果手表可以再添加一个按钮,表示把当前的数加 k 该多好啊……他想知道,如果有了这个 +k 按钮,按照最优策略按键,从任意一个分钟数调到另外任意一个分钟数最多要按多少次。注意,按 +k 按钮时,如果加k后数字超过n-1,则会对n取模。比如,n=10, k=6 的时候,假设当前时间是0,连按2次 +k 按钮,则调为2。输入:一行2个整数n,k输出:一行一个整数解决方案广搜,每次一层算一次,每一层加入每个点+1和+k中未访问的数值代码清单 调手表Python代码Courier New字体,23磅行间距n, k = map(int, input().split())ans = []count = count_ =0for i in range(1, n):if i % k != 0:count += 1else:count = 0count_ += 1ans.append(count + count_)print(max(ans))结语刚开始想用深搜每次加一过后取余k,明显没考虑到多次加k可能更快。如n=5,k=4,到3只需要加两次k,但是加1需要三次。因此此种方法是不可行的,所以便考虑广搜的解决方式,每次加1,遇到被整除的地方,原先的计数器置零,整除计数器加1记录每次整除后的数值,求出最大的哪个数就是实习编辑:王晓姣作者:陈鱼江,冯睿,肖华稿件来源:深度学习与文旅应用实验室(DLETA)

(0)

相关推荐

  • 老师,我没有拿她的手表

    老师,我没有拿她的手表

  • 【微学院】 | 一次解决所有日历问题

    日历,一个再平常不过的功能,也是一个非常实用的功能,但就这个功能来说却有着很大的学问. 不知您是否遇到过日历跳了一半,或者日历在调整后又自动向前跳了一天,更或是想要调整日历的时候不知道怎么调或者何时去 ...

  • 算法创作|神奇语言问题解决方法

    问题描述一位同学正在学习一门神奇的语言,其中的单词都是由小写英文字母组成,有些单词很长,而这位同学一直记不住,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现的最多来分辨单词,现在请帮助这位同学 ...

  • 算法创作|阶梯电价问题解决方法

    问题描述为了提倡居民节约用电,某省电力公司执行"阶梯电价",安装一户一表的居民用户电价分为两个"阶梯":月用电量50千瓦时(含50千瓦时)以内的,电价为0.53 ...

  • 算法创作 | 二叉树遍历问题解决方法

    问题描述二叉树的先序遍历.中序遍历.后序遍历怎么求?解决方案给你一个二叉树(如图)那么怎么找出它的先序遍历.中序遍历.后序遍历呢?我们先看一个简单二叉树来了解它的概念. 所谓前序,中序,后序就是指根所 ...

  • 算法创作|“画雪人”问题解决方法

    问题描述示例:运用Turtle画出一个戴帽子的雪人在你门前,我堆起一个雪人,代表笨拙的我,把你久等...解决方案掌握turtle库,you can do you want.代码清单 1 DFS求解1到 ...

  • 算法创作|反转链表问题解决方法

    问题描述给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 . ...

  • 算法创作|简单行列式问题解决方法

    前言用Python做线代问题描述大二学习了行列式的部分知识,所以就想能不能用Python计算简单的行列式计算.输入:新建文件夹,建立一个新的Excel,写入图1数据,并重命名这页sheet为计算,并将 ...

  • 算法创作|质数计数问题解决方法

    问题描述统计所有小于非负整数n的质数的数量.示例:输入:n = 10输出:4示例:输入:n = 1输出:0示例:输入:n = 0输出:0提示:0 <= n <= 5 * 106解决方案对于 ...

  • 算法创作 | 0到n-1中缺失的数字问题解决方法

    问题描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字.示例1:输入:[0,1,3 ...

  • 算法创作|找出游戏的获胜者问题解决方法

    问题描述共有 n 名小伙伴一起做游戏.小伙伴们围成一圈,按 顺时针顺序 从 1 到 n 编号.确切地说,从第 i 名小伙伴顺时针移动一位会到达第 (i+1) 名小伙伴的位置,其中 1 <= i ...