豆油瓶

给你一个N*N的矩阵M代表N个用户之间的交互关系,其中M[i][j]代表用户i和用户j之间的交互次数,当交互次数大于等于3的时候,用户i和用户j就是豆油关系。当AB互为豆油,BC互为豆油,即便A,C之间没有交互,AC也互为间接豆油。豆油之间构成的集合被称为豆油瓶,若用户不与任何人有交互关系他本身也是一个豆油瓶。

另外,ij互为豆油 则M[i][j] = M[j][i], 自己和自己之间M[i][i] = 0

要求输入为用户个数 N 和关系矩阵N*N ,元素之间以空格分隔 ,输出为豆油瓶的个数

例1

输入

3
0 4 0
4 0 6
0 6 0

输出

1

解释用户1和用户2之间有4次交互,互为豆油,用户2和用户3之间有6次交互,,互为豆油,用户1和用户3为间接豆油。

例2

输入

3
0 0 0
0 0 0
0 0 0

输出

3

解释3用户之间都没有交互,有三个豆油瓶

待验证的答案,目前三个用例没问题

def Answer(N,nums,set_nums):
    if N <= 1:
        return N
    for i in range(1,N):#只遍历斜下方的矩阵
        for j in range(i):
            if nums[i][j] >= 3:#是否为豆油
                flag = False
                for set1 in set_nums:
                    if i  in set1 or j  in set1:
                        flag = True
                        set1.add(i)
                        set1.add(j)
                        N -= 1
                if flag == False:
                    set1 = set()
                    set1.add(i)
                    set1.add(j)
                    N -= 1
                    set_nums.append(set1)    
    return N 

 
# while True:
#     try:
#         N = int(input())
#         nums = [0]*N
#         for _ in range(N):
#             nums[i] =[int(n) for n in input().split(' ')]
#         print(Answer(N,nums,[]))    
#     except:
#         break
  

nums0 = [[0,0,0],[0,0,0],[0,0,0]]   

nums1 = [[0,4,0],[4,0,6],[0,6,0]]

nums2 = [[0,0,6,1],[0,0,0,3],[6,0,0,0],[1,3,0,0]]

nums = nums2        
N = 4                
print(Answer(N,nums,[])) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值