题解 | 用户分群

用户分群

https://www.nowcoder.com/practice/ba24c14adb424bd2b4888c70ddfe9568

import sys
import math
from collections import deque
#for line in sys.stdin:
    #a = line.split()
    #print(int(a[0]) + int(a[1]))
k = int(input())
kk=deque()#分组
kkk=[0]*k#同组个数
kk_num1=[float(0)]*k
kk_num2=[float(0)]*k
kk_num3=[float(0)]*k
matrix=[]#中心点
data=[]
for _ in range(k):
    row=list(map(float,input().split()))
    matrix.append(row)
#print(matrix)
n = int(input())#迭代次数
m = int(input())
for _ in range(m):
    row=list(map(float,input().split()))
    data.append(row)
#print(data)

for _ in range(n):#计算迭代
    for i in range(len(data)):
        d=float(0)
        zubie=0
        for j in range(k):
            d1=pow((data[i][0]-matrix[j][0]),2)
            d2=pow((data[i][1]-matrix[j][1]),2)
            d3=pow((data[i][2]-matrix[j][2]),2)
            d4= round(math.sqrt(d1+d2+d3),2)
            #print(d4,i,j)
            if d==0:
                d=d4
            elif d!=0 and d4<d:
                d=d4
                zubie=j
                #print("gaibian")
                
            
                
        #q,w=kk.pop()
        #print(i,zubie)
        kkk[zubie]+=1
        kk_num1[zubie]+=data[i][0]#表示分到同一组的所有和
        kk_num2[zubie]+=data[i][1]
        kk_num3[zubie]+=data[i][2]
        kk.append((i,zubie))

    #遍历完之后,一共有i个数据点,且每个数据点后的j表示分的组类



        for z in range(len(kkk)):
            if kkk[z]>0:
                matrix[z][0]=round(kk_num1[z] / kkk[z],2)#表示分到同一组的所有和的算术平均值
                matrix[z][1]=round(kk_num2[z] / kkk[z],2)
                matrix[z][2]=round(kk_num3[z] / kkk[z],2)

for i in range(k):
    #print(matrix[i][0],matrix[i][1],matrix[i][2])
    print(f'{matrix[i][0]:.2f}',f'{matrix[i][1]:.2f}',f'{matrix[i][2]:.2f}')
#print(matrix)


保留两位小数点('f{nums:.2f}')平方pow() 根号sqrt()

#python3#
全部评论

相关推荐

牛客20485985...:抱抱😘,首先你还有春招,然后就算这时候没上岸也没关系,大部分人都是这样,毕业了再找也成,最后工作只是生活的一小部分,找到工作也不是一个必须的事情。不要气馁不要焦虑你只是陷入了短暂的低谷,你也一直有退路
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务