鱼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 | 显示全部楼层
se=set()
def fun337(s,t=''):
    global se
    for i in range(len(s)):
        for j in range(len(s[i+1:])+1):
            se.add(t+s[i:i+j+1])
        fun337(s[i+1:],t)
        t=s[:i+1]
    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 | 显示全部楼层
管他超不超时的,先试试
def fun(x):
    result = [[]]
    for each in x:
        result.extend([subset + [each] 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)

评分

参与人数 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 编辑
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[0:int(j)]+' '+string[int(j)+1:n]
    string=string.replace(' ','')
    setwanted.add(string)

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

print('输出:',len(setwanted))
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 编辑
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-26 07:48:54 | 显示全部楼层
l=[]
def f337(s:str)->int:
    global l
    for i in range(len(s)):
        if s[i] not in l:
            l.append(s[i])
        if s not in l:
            l.append(s)
        f337(s[:i]+s[i+1:])
    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 | 显示全部楼层
def fun337(strs):

    substrs=[[]]

    for i in strs[::-1]:

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

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

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

评分

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

查看全部评分

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

使用道具 举报

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

评分

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

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 02:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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