鱼C论坛

 找回密码
 立即注册
楼主: zltzlt

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

[复制链接]
 楼主| 发表于 2020-2-25 19:28:34 | 显示全部楼层
kinkon 发表于 2020-2-25 18:19
看看还有没有问题

解答错误

输入:"bbfcd"
输出:17
预期结果:23
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-25 19:30:14 | 显示全部楼层
拉了盏灯 发表于 2020-2-25 18:57
说白了就是找子集,幸好以前做过找子集,

输入 "pcrdhwdxmqdznbenhwjsenjhvulyve" 超时
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 21:28:18 | 显示全部楼层
str0 = input("输入:")
substrlist = substr = [str0]
templist = []
temp = ''
count = 1
tempcount = 0
for i in range(len(str0)-1):
    for j in range(len(substrlist)):
        for k in range(len(substrlist[j])):
            temp = substrlist[j][:k]+substrlist[j][k+1:]
            if temp not in templist:
                tempcount += 1
                templist += [temp]
    substrlist = templist
    count += tempcount
    tempcount = 0
print('输出:%d'%count)

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 21:45:13 | 显示全部楼层
  1. se=set()
  2. def fun337(s,t=''):
  3.     global se
  4.     for i in range(len(s)):
  5.         for j in range(len(s[i+1:])+1):
  6.             se.add(t+s[i:i+j+1])
  7.         fun337(s[i+1:],t)
  8.         t=s[:i+1]
  9.     return len(se)
复制代码

我现在有点脑袋发蒙,如果效率不行那就交给楼主改造吧

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 21:51:58 | 显示全部楼层

如果说是这样的话,那么示例2好像就有点问题了,'ab' 和 'ba' 看起来是一样的组合呀。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 22:17:04 | 显示全部楼层
zltzlt 发表于 2020-2-25 17:23
e, bbb, bebb, beb, bb, b, eb, ebb, be

话说 _e_b 和 _eb_ 是这样产生的子串吗?
这样的话就包含了排列哟,因为纯组合的话 be__ 跟这两个是一模一样的呢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 22:27:02 | 显示全部楼层
请问:
'aba' 与 'aab' 与 'baa' 三个的答案都一样吗?
感觉14#是问错了关键点。
如果说我提出的那三个答案一样的话,那么请回应我24#提出的矛盾。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 22:37:41 From FishC Mobile | 显示全部楼层
阴阳神万物主 发表于 2020-2-25 22:27
请问:
'aba' 与 'aab' 与 'baa' 三个的答案都一样吗?
感觉14#是问错了关键点。

不一样,首字符前面不能加,尾字符后面不能加,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 22:42:51 | 显示全部楼层
管他超不超时的,先试试

  1. def fun(x):
  2.     result = [[]]
  3.     for each in x:
  4.         result.extend([subset + [each] for subset in result])
  5.     list1 = []
  6.     for i in result:
  7.         if i not in list1:
  8.             list1.append(i)
  9.             while [] in list1:
  10.                 list1.remove([])
  11.     return len(list1)
复制代码

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 22:45:30 | 显示全部楼层
拉了盏灯 发表于 2020-2-25 22:37
不一样,首字符前面不能加,尾字符后面不能加,

嗯,我就是炸一下楼主,看他慌不慌

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-25 23:49:17 | 显示全部楼层
本帖最后由 walleeee 于 2020-2-26 00:03 编辑
  1. shuru=input('输出:')

  2. n=len(shuru)

  3. setwanted=set()

  4. for i in range(n**n):
  5.     string=shuru
  6.     a=[]
  7.     k=i
  8.     for j in range(n):
  9.         a.append(k%n)
  10.         k=k//n
  11.     a=set(a)
  12.     for j in set(a):
  13.         string=string[0:int(j)]+' '+string[int(j)+1:n]
  14.     string=string.replace(' ','')
  15.     setwanted.add(string)

  16. setwanted.remove('')
  17. setwanted.add(shuru)

  18. print('输出:',len(setwanted))
  19. print(setwanted)
复制代码

算不动。。

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 00:59:20 | 显示全部楼层
本帖最后由 546623863 于 2020-2-26 01:02 编辑

睡前来瞅了一眼,居然更新题目了,看前面的好像都是暴力的。。。算了,明天再敲代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 01:28:34 | 显示全部楼层
本帖最后由 walleeee 于 2020-2-26 08:08 编辑
  1. shuru=input('输入:')

  2. n=len(shuru)
  3. print(n)
  4. setwanted={' '}

  5. shuru=list(shuru)

  6. for i in range(n):
  7.     print(i)
  8.     a=shuru.pop()
  9.     setinter=set()
  10.     for j in setwanted:
  11.         b=a+j
  12.         setinter.add(b)
  13.     setwanted=setwanted.union(setinter)

  14. setwanted.remove(' ')
  15.    
  16. listwanted=[]   

  17. for each in setwanted:
  18.     listwanted.append(each.replace(' ',''))

  19. print('输出:',len(listwanted))
  20. print(listwanted)
复制代码

最终结果是836817663
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 07:48:54 | 显示全部楼层
  1. l=[]
  2. def f337(s:str)->int:
  3.     global l
  4.     for i in range(len(s)):
  5.         if s[i] not in l:
  6.             l.append(s[i])
  7.         if s not in l:
  8.             l.append(s)
  9.         f337(s[:i]+s[i+1:])
  10.     return l
复制代码

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 10:26:47 | 显示全部楼层
若是26个不同的字母,答案是 2的26 次方 无论是什么算法 不超时那是真的牛,我估计够呛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 13:55:15 | 显示全部楼层
本帖最后由 Jonsen_Brad 于 2020-2-26 14:05 编辑
fan1993423 发表于 2020-2-25 16:38
哦,我想问下,比如abac 是不是ab,aa,,ac,ba,bc,ac,aba,abc,bac都是,但cab这种倒过来的不是?


应该算。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 14:42:00 | 显示全部楼层
“”“
def fun(s):
    count = 0
    for i in range(len(s)):
        for j in range(i, len(s)):
            count += 1
    print(count)

str1 = input("请输入一个字符串:");
fun(str1)
”“”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 14:51:47 | 显示全部楼层
KevinHu 发表于 2020-2-26 14:42
“”“
def fun(s):
    count = 0

这个不对
应该是这个:
def fun(s):
    temp = []
    count = 0
    for i in range(len(s)):
        for j in range(i, len(s)):
            if s[i:j + 1] not in temp:
                # print(s[i:j + 1], end = " ")
                count += 1
                temp.append(s[i:j + 1])
    print("", count, sep = "\n")

str1 = input("请输入一个字符串:");
fun(str1)

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 16:28:21 | 显示全部楼层
  1. def fun337(strs):

  2.     substrs=[[]]

  3.     for i in strs[::-1]:

  4.         substrs=substrs+[[i]+j for j in substrs]

  5.     substrs=list(set(tuple(i) for i in substrs)) #去重

  6.     return len(substrs)-1   #去掉一个空子集
复制代码

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 21:32:40 | 显示全部楼层
大伙都超时,弄个最短的好了😁
  1. def f337(s):
  2.     sub = ['']
  3.     for i in s:
  4.         sub += [i+str(j) for j in sub]   
  5.     return len(set(sub))-1
复制代码

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-24 17:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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