#腾讯笔试#8.23 腾讯笔试第二题为什么回溯一个都过不了
import sys
class Solution:
def subset(self,s,n):
self.res = []
partial = ""
self.used = [False] * len(s)
self.backtracking(partial,s)
self.res.sort()
return self.res[n-1]
def backtracking(self,partial,s):
if partial:
self.res.append(partial)
if len(partial) == len(s):
return
else:
for i in range(len(s)):
if not self.used[i]:
if not partial or ord(s[i]) >= ord(partial[-1]):
if i > 0 and s[i] == s[i-1] and not self.used[i - 1]:
continue
self.used[i] = True
partial+=s[i]
self.backtracking(partial,s)
partial = partial[:-1]
self.used[i] = False
a = input().split()
s = a[0]
n = int(input().split()[0])
print(str(Solution().subset(s,n)))
import sys
class Solution:
def subset(self,s,n):
self.res = []
partial = ""
self.used = [False] * len(s)
self.backtracking(partial,s)
self.res.sort()
return self.res[n-1]
def backtracking(self,partial,s):
if partial:
self.res.append(partial)
if len(partial) == len(s):
return
else:
for i in range(len(s)):
if not self.used[i]:
if not partial or ord(s[i]) >= ord(partial[-1]):
if i > 0 and s[i] == s[i-1] and not self.used[i - 1]:
continue
self.used[i] = True
partial+=s[i]
self.backtracking(partial,s)
partial = partial[:-1]
self.used[i] = False
a = input().split()
s = a[0]
n = int(input().split()[0])
print(str(Solution().subset(s,n)))
全部评论
我本地自测的结果都是对的然后一个都没过,请问一下是为什么呢
相关推荐
点赞 评论 收藏
分享
11-11 17:45
门头沟学院 Java 扶老蟑螂过马路被无证...:1. 技术栈那里把数据结构删了,小中厂用不上,大厂手撕能难死你,linux那里可以考虑删掉,还不如换个git团队协作开发
2.不要使用一些项目不匹配的技术,例如分库分表和你上边的ddd,真正使用ddd的都是【超】大规模,大部分都仍然使用多模块聚合mvc,这样虽然看起来高大上,但是新增了前期协定需求跟后期维护的成本,因为开发中都是选择最适合当起版本的开发方式跟中间件,这样反而会体现你为了学而学(因为可能面试官都不完全熟悉ddd,然后问你你也回答不出深度)
3.项目写了很多的redis使用,为什么技术栈不写上redis
4.项目技术栈跟业务需求高度重合,完全可以整合成一个,然后再去弄一个感兴趣的其他业务或者轮子,或者把上面的一个换下包装
5.奖项自己编一点奖学金,加个四六级,删掉蓝桥杯
点赞 评论 收藏
分享
点赞 评论 收藏
分享

美团成长空间 2667人发布