鱼C论坛

 找回密码
 立即注册
查看: 3096|回复: 25

[已解决]Python:每日一题 363

[复制链接]
发表于 2020-3-30 18:42:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 zltzlt 于 2020-4-1 13:23 编辑

今天的题目:


有一个需要密码才能打开的保险箱。密码是 n 位数,密码的每一位是 k 位序列 0, 1, ..., k-1 中的一个 。

你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保险箱。

举个例子,假设密码是 "345",可以输入 "012345" 来打开它,只是你输入了 6 个字符。

返回能打开保险箱的并且字典序最小的字符串。

示例1:

输入:n = 1, k = 2
输出:"01"
说明:"10"也可以打开保险箱。
示例 2:

输入:n = 2, k = 2
输出:"00110"
说明:"01100", "10011", "11001" 也能打开保险箱。


欢迎大家一起答题!
最佳答案
2020-4-1 13:50:44
@zltzlt  已经补充
  1. def oldfun363(n,k):
  2.     if n == 1:
  3.         result = ''
  4.         for each in range(0,k):
  5.             result += str(each)
  6.         return result
  7.     result = '0'*(n-1)
  8.     hasBeenIn = set()
  9.     temp = 0
  10.     M = k**n
  11.     for each in range(0,M):
  12.         for inner in range(k-1,-1,-1):
  13.             tempInner = (temp*k+inner)%(M)
  14.             if tempInner not in hasBeenIn:
  15.                 hasBeenIn.add(tempInner)
  16.                 result += str(inner)
  17.                 temp = tempInner
  18.                 break
  19.     return result
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-30 19:00:52 | 显示全部楼层
有点晕,没看懂题型
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 19:09:05 | 显示全部楼层
示例1中为什么10也能打开?此时保存的不是最后一位0吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 19:27:00 | 显示全部楼层
本帖最后由 永恒的蓝色梦想 于 2020-3-31 08:13 编辑

这道题的意思是让我们找出一个最短的能包含所有可能密码的字符串。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 19:29:18 | 显示全部楼层
不懂,麻烦多发几个例子
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 19:37:03 | 显示全部楼层
这题的描述就贼离谱,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 20:29:55 | 显示全部楼层
越来越看不懂题目了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 20:46:13 | 显示全部楼层
  1. from itertools import product as p,permutations as pm
  2. def f363(n,k):
  3.     l=[]
  4.     r=[]
  5.     for e in p(*[''.join(map(str,range(k)))]*n):
  6.         l.append(''.join(e))
  7.     for e in pm(l[1:],len(l)-1):
  8.         s='0'*n
  9.         for ee in e:
  10.             if not s:
  11.                 s+=ee
  12.             elif ee in s:
  13.                 continue
  14.             else:
  15.                 for i in range(n):
  16.                     if ee[0:n-i]==s[-n+i:]:
  17.                         s+=ee[n-i:]
  18.                         break
  19.                 else:
  20.                     s+=ee
  21.         r.append(s)
  22.     r.sort(key=lambda x:(len(x),x))
  23.     return r[0]
复制代码

头大,写个超时的

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 21:05:53 | 显示全部楼层
这还是密码箱吗?这么多密码都能开。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-3-30 21:06:38 | 显示全部楼层
看了视频前3P的过来看这个一脸懵逼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 22:03:16 | 显示全部楼层
就想问第二个列子输出0110,或者110是不是正确答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 22:04:56 | 显示全部楼层
前排占位
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 22:12:50 | 显示全部楼层
@zltzlt  k不会超过10吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-30 22:58:31 | 显示全部楼层
zltzlt,亲爱的楼主,咱能不能把题目说清楚一点???我语文本来就不好的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 00:23:11 | 显示全部楼层
我买的书,扫码二维码不能看视频,看到序列,函数这些视频都不能看 这是什么情况,文泉云盘的视频。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 04:46:11 | 显示全部楼层
  1. from itertools import product as p
  2. def f363(n,k):
  3.     keys=[]
  4.     for e in p(*[''.join(map(str,range(k)))]*n):
  5.         keys.append(''.join(e))
  6.     res=''.join(keys)
  7.     Flag=1
  8.     while Flag:
  9.         i=len(res)-1
  10.         while True:
  11.             if sum([k not in (res[0:i]+res[i+1:]) for k in keys])==0:
  12.                 res=res[0:i]+res[i+1:]
  13.                 break
  14.             else:
  15.                 i-=1
  16.             if i==0:
  17.                 Flag=0
  18.                 break

  19.     return res
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
zltzlt + 3 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 08:08:19 | 显示全部楼层
chenlei92 发表于 2020-3-31 00:23
我买的书,扫码二维码不能看视频,看到序列,函数这些视频都不能看 这是什么情况,文泉云盘的视频。

BILIBILI 搜 鱼C-小甲鱼
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 08:46:21 | 显示全部楼层
这个版块版主换了是吧,前年7月份的时候记得没有这么复杂,刚读题目都要想半天
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 09:46:45 | 显示全部楼层
Chysial 发表于 2020-3-31 08:46
这个版块版主换了是吧,前年7月份的时候记得没有这么复杂,刚读题目都要想半天

这个版主是去年下半年上任的~
这个题目摘自leetcode,本身题目描述就有问题,不是版主的锅
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-31 13:14:42 From FishC Mobile | 显示全部楼层
Chysial 发表于 2020-3-31 08:46
这个版块版主换了是吧,前年7月份的时候记得没有这么复杂,刚读题目都要想半天

和我注册的时间差不多
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-18 18:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表