鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: zltzlt

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

[复制链接]
 楼主| 发表于 2020-4-10 13:13:38 | 显示全部楼层

解答错误

输入:
  1. [[2, 10], [3, 7], [3, 15], [4, 11], [6, 12], [6, 16], [7, 8], [7, 11], [7, 15], [11, 12]]
复制代码

输出:7
预期结果:5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 13:14:45 | 显示全部楼层

解答错误

输入:
  1. [[60, 92], [69, 113], [90, 101], [8, 48], [60, 101], [22, 47], [16, 43], [6, 45], [66, 78], [23, 113], [14, 45], [31, 90], [97, 121], [17, 21], [47, 66], [14, 72], [94, 96], [85, 90], [21, 49], [34, 73], [38, 85], [42, 91], [58, 114], [6, 110], [32, 100]]
复制代码

输出:13
预期结果:12
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 13:15:29 | 显示全部楼层
阴阳神万物主 发表于 2020-4-9 17:02
难度评级:简单
要素分析:数论
随机输入生成器,送给有需要的人:

解答错误

输入:[[6, 21], [1, 15], [15, 20], [10, 21], [0, 7]]
输出:6
预期结果:4
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 13:18:36 | 显示全部楼层

解答错误

输入:
  1. [[2, 10], [3, 7], [3, 15], [4, 11], [6, 12], [6, 16], [7, 8], [7, 11], [7, 15], [11, 12]]
复制代码

输出:7
预期结果:5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 13:19:04 | 显示全部楼层

解答错误

输入:
  1. [[2, 10], [3, 7], [3, 15], [4, 11], [6, 12], [6, 16], [7, 8], [7, 11], [7, 15], [11, 12]]
复制代码

输出:7
预期结果:5
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 13:19:32 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 14:34:04 | 显示全部楼层
def func371(intervals):
    count = 0
    newlist = sorted(intervals,key = lambda s:s[1])
    result = [(newlist[0][1]-1),newlist[0][1]]
    for i in range(1,len(newlist)):
        for j in result:
            if j <=newlist[i][1] and j>=newlist[i][0]:
                count += 1
                temp = j
            if count == 2:
                break
        if count == 0:
            result.append((newlist[i][1]-1))
            result.append(newlist[i][1])
        if count == 1:
            if temp !=newlist[i][1]:
                result.append(newlist[i][1])
            else:
                result.append(newlist[i][1]-1)
        count = 0
    return len(result)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-10 14:46:29 | 显示全部楼层
zltzlt 发表于 2020-4-10 13:15
解答错误

输入:[[6, 21], [1, 15], [15, 20], [10, 21], [0, 7]]

修好了
  1. def solve(intervals:list,how:'是否打印最小集合'=False):
  2.     sets = [set(range(i[0],i[1]+1))for i in intervals]
  3.     setses = sets[:]
  4.     u = set()
  5.     while sets:
  6.         n = []
  7.         l = len(sets)
  8.         flg = [True]*l
  9.         for a in range(l-1):
  10.             for b in range(a+1,l):
  11.                 c = sets[a].intersection(sets[b])
  12.                 if len(c)>=2:
  13.                     if c not in n:n.append(c)
  14.                     flg[a],flg[b] = False,False
  15.             if flg[a]:n.append(sets[a])
  16.         if flg[-1]:n.append(sets[-1])
  17.         if n == sets:break
  18.         sets = n
  19.     db = [[j for j in sets if len(j.intersection(i))>=2]for i in setses]
  20.     def rm(a,s):
  21.         i = 0
  22.         while i<len(a):
  23.             if s in a[i]:
  24.                 a.pop(i)
  25.             else:
  26.                 i+= 1
  27.     while db:
  28.         for each in db:
  29.             if len(each)==1:
  30.                 u.update({each[0].pop(),each[0].pop()})
  31.                 rm(db,each[0])
  32.                 break
  33.         else:
  34.             nd = []
  35.             for each in sets:
  36.                 n = 0
  37.                 for l in db:
  38.                     if each in l:n += 1
  39.                 nd.append((each,n))
  40.             nd.sort(key=lambda x:x[1],reverse=True)
  41.             u.update({nd[0][0].pop(),nd[0][0].pop()})
  42.             rm(db,nd[0][0])
  43.     if how:print(intervals,'->',u)
  44.     return len(u)
  45. if __name__ == '__main__':
  46.     print('示例1 输出:',solve([[1, 3], [1, 4], [2, 5], [3, 5]],1))
  47.     print('示例2 输出:',solve([[1, 2], [2, 3], [2, 4], [4, 5]]))
  48.     print('之前错的:',solve([[6, 21], [1, 15], [15, 20], [10, 21], [0, 7]],1))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-10 13:21:59 | 显示全部楼层
  1. from itertools import combinations

  2. def fun371(intervals):
  3.     intervals = [[j for j in range(i[0],i[1]+1)] for i in intervals]
  4.     total = [i for i in range(min(j[0] for j in intervals),max(j[1] for j in intervals)+1)]
  5.     for i in range(2,len(total)+1):
  6.         for j in combinations(total,i):
  7.             for n in intervals:
  8.                 count = 0
  9.                 for m in j:
  10.                     if m in n:
  11.                         count += 1
  12.                 if count < 2:
  13.                     break
  14.             else:
  15.                 return len(j)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-19 17:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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