zltzlt 发表于 2020-2-25 19:28:34

kinkon 发表于 2020-2-25 18:19
看看还有没有问题

解答错误

输入:"bbfcd"
输出:17
预期结果:23

zltzlt 发表于 2020-2-25 19:30:14

拉了盏灯 发表于 2020-2-25 18:57
说白了就是找子集,幸好以前做过找子集,

输入 "pcrdhwdxmqdznbenhwjsenjhvulyve" 超时

jijidebaba 发表于 2020-2-25 21:28:18

str0 = input("输入:")
substrlist = substr =
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)):
            temp = substrlist[:k]+substrlist
            if temp not in templist:
                tempcount += 1
                templist +=
    substrlist = templist
    count += tempcount
    tempcount = 0
print('输出:%d'%count)

fan1993423 发表于 2020-2-25 21:45:13

se=set()
def fun337(s,t=''):
    global se
    for i in range(len(s)):
      for j in range(len(s)+1):
            se.add(t+s)
      fun337(s,t)
      t=s[:i+1]
    return len(se)
我现在有点脑袋发蒙,如果效率不行那就交给楼主改造吧

阴阳神万物主 发表于 2020-2-25 21:51:58

zltzlt 发表于 2020-2-25 17:54
是的

如果说是这样的话,那么示例2好像就有点问题了,'ab' 和 'ba' 看起来是一样的组合呀。

阴阳神万物主 发表于 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__ 跟这两个是一模一样的呢。

阴阳神万物主 发表于 2020-2-25 22:27:02

请问:
'aba' 与 'aab' 与 'baa' 三个的答案都一样吗?
感觉14#是问错了关键点。
如果说我提出的那三个答案一样的话,那么请回应我24#提出的矛盾。

拉了盏灯 发表于 2020-2-25 22:37:41

阴阳神万物主 发表于 2020-2-25 22:27
请问:
'aba' 与 'aab' 与 'baa' 三个的答案都一样吗?
感觉14#是问错了关键点。


不一样,首字符前面不能加,尾字符后面不能加,

蒋博文 发表于 2020-2-25 22:42:51

管他超不超时的,先试试

def fun(x):
    result = [[]]
    for each in x:
      result.extend( for subset in result])
    list1 = []
    for i in result:
      if i not in list1:
            list1.append(i)
            while [] in list1:
                list1.remove([])
    return len(list1)

阴阳神万物主 发表于 2020-2-25 22:45:30

拉了盏灯 发表于 2020-2-25 22:37
不一样,首字符前面不能加,尾字符后面不能加,

嗯,我就是炸一下楼主,看他慌不慌https://dss1.baidu.com/70cFfyinKgQFm2e88IuM_a/forum/pic/item/562c11dfa9ec8a13424f9c95fc03918fa0ecc06a.jpg

walleeee 发表于 2020-2-25 23:49:17

本帖最后由 walleeee 于 2020-2-26 00:03 编辑

shuru=input('输出:')

n=len(shuru)

setwanted=set()

for i in range(n**n):
    string=shuru
    a=[]
    k=i
    for j in range(n):
      a.append(k%n)
      k=k//n
    a=set(a)
    for j in set(a):
      string=string+' '+string
    string=string.replace(' ','')
    setwanted.add(string)

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

print('输出:',len(setwanted))
print(setwanted)

算不动。。

546623863 发表于 2020-2-26 00:59:20

本帖最后由 546623863 于 2020-2-26 01:02 编辑

睡前来瞅了一眼,居然更新题目了,看前面的好像都是暴力的。。。算了,明天再敲代码

walleeee 发表于 2020-2-26 01:28:34

本帖最后由 walleeee 于 2020-2-26 08:08 编辑

shuru=input('输入:')

n=len(shuru)
print(n)
setwanted={' '}

shuru=list(shuru)

for i in range(n):
    print(i)
    a=shuru.pop()
    setinter=set()
    for j in setwanted:
      b=a+j
      setinter.add(b)
    setwanted=setwanted.union(setinter)

setwanted.remove(' ')
   
listwanted=[]   

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

print('输出:',len(listwanted))
print(listwanted)

最终结果是836817663

ouyunfu 发表于 2020-2-26 07:48:54

l=[]
def f337(s:str)->int:
    global l
    for i in range(len(s)):
      if s not in l:
            l.append(s)
      if s not in l:
            l.append(s)
      f337(s[:i]+s)
    return l

TJBEST 发表于 2020-2-26 10:26:47

若是26个不同的字母,答案是 2的26 次方 无论是什么算法 不超时那是真的牛,我估计够呛

Jonsen_Brad 发表于 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这种倒过来的不是?

应该算。。

KevinHu 发表于 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)
”“”

KevinHu 发表于 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 not in temp:
                # print(s, end = " ")
                count += 1
                temp.append(s)
    print("", count, sep = "\n")

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

jdzzj 发表于 2020-2-26 16:28:21

def fun337(strs):

    substrs=[[]]

    for i in strs[::-1]:

      substrs=substrs+[+j for j in substrs]

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

    return len(substrs)-1   #去掉一个空子集

kinkon 发表于 2020-2-26 21:32:40

大伙都超时,弄个最短的好了😁
def f337(s):
    sub = ['']
    for i in s:
      sub +=    
    return len(set(sub))-1
页: 1 [2] 3 4
查看完整版本: Python:每日一题 337