大牛的距离(笑cry)精简算法
生活随笔
收集整理的這篇文章主要介紹了
大牛的距离(笑cry)精简算法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在一條數軸上有N頭牛在不同的位置上,每頭牛都計算到其它各頭牛的距離。求這n*(n-1)個距離的總和。1<= N <= 10000。每頭牛所在位置是一個范圍在0到1,000,000,000之內的整數。
/***********************************************************************\
此題坑在取值上,10000個數,超過了二次循環的范圍,但這里的二次循環是指從一開始的循環,所以思路如下
輸入數組之后,對數組進行排序
例:
1 2 3 6 9
1:1-1 2-1 3-1 6-1 9-1
2:2-1 2-2 3-2 6-2 9-2
3:3-1 3-2 3-3 6-3 9-3
6:6-1 6-2 6-3 6-6 9-6
9:9-1 9-2 9-3 9-6 9-9
注意,排過序后,再次計算距離就會有0之后的數(即紅字之后的數)這些數在下面一定有對應的數,這些數無需再次計算,乘二即可。
所以二次循環可用
代碼實現如下:
#include<iostream> #include<algorithm> using namespace std; int main() { long long m,n,p,q,a[26666],sum=0; cin>>m; for(int i=1;i<=m;i++) { cin>>a[i]; } sort(a+1,a+m+1); for(int i=1;i<=m;i++) { for(int j=i;j<=m;j++) { p=a[i]-a[j]; p=p*-1; sum=sum+p; } } cout<<sum*2<<endl; } return 0; }轉載于:https://www.cnblogs.com/supersumax/p/5882472.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的大牛的距离(笑cry)精简算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React程序结构介绍-Hello wo
- 下一篇: 原创:中国叫俄罗斯“战斗民族”,那俄罗斯