牛客真题(10)-堆棋子

今天继续刷牛客,网易的堆棋子。

分析:
给定n个棋子的横纵坐标,然后输出i个棋子放在一起的移动距离。解法其实有点类似暴力解决,通过计算每个棋子到其他所有棋子的曼哈顿距离,并更新移动距离和的最小值。

问题:
1、用临时变量存储当前点到所有点的距离;
2、计算距离的最小值。

附上C++代码:

#include

using namespace std;

int main()
{
    int n;
    cin>>n;
    vector x(n),y(n);
    for(int i=0;i>x[i];
    for(int i=0;i>y[i];
    priority_queue,greater> pq;
    vector result(n,INT_MAX);
    for(int i=0;i

附上Python代码:

n = int(input())
x = list(map(int, input().split()))
y = list(map(int, input().split()))

dist = [float('Inf') for _ in range(n)]
for i in range(n):
    for j in range(n):
        t = 0
        tmp = []
        for k in range(n):
            tmp.append(abs(x[i]-x[k])+abs(y[j]-y[k]))
        tmp.sort()
        for k in range(n):
            t += tmp[k]
            dist[k] = min(dist[k], t)

print(' '.join(map(str, dist)))

你可能感兴趣的:(代码训练)