iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

C語言救救我系列 第 29

Day29-"練習-4"

  • 分享至 

  • xImage
  •  

今天也是練習CPE的題目

世界聞名的黑社會老大A先生要搬到紐約來了。在那裡他有一個大家族,並且他們都住在伯朗大道上。因為時常要拜訪所有的親戚,他想要找一間離他們最近的房子,也就是說他希望從他的家到所有的親戚家的路徑為最短的。

輸入值的第一列的數字為有多少組測試資料,且此數字為一整數數字。
每筆測試資料的第一個數字代表著有多少親戚,且數字範圍為0到500,接續的數字為親戚家的門牌號碼,但要注意的是,門牌號碼可能會相同,且範圍為0到30000。

輸出值為從他家到親戚家的最短距離和,但要特別注意的是,有些值相減後會出現負數,但距離沒有負值,因此要記得將數值取絕對值。
.
.
.
.
.

#include <stdio.h>
#include <stdlib.h>

void main()
{
	int x,a,b[30010],i,j,y,sum,avg,distance,total;
	scanf("%d",&x);//測試組數 
	while(x--)
	{
		scanf("%d",&a);//幾個鄰居 
		for(i=0;i<a;i++)
		{
			scanf("%d",&b[i]);//鄰居家位置 
		}
		for(i=0;i<a;i++)
		{
			for(j=i+1;j<a;j++)
			{
				if(b[i]>b[j])
				{
					y=b[i];
					b[i]=b[j];
					b[j]=y; 
				}
			}
		}
		sum=0;
		for(i=0;i<a;i++)
		{
			sum=sum+b[i];
		}
		total=0;
		for(i=0;i<a;i++)
		{
			avg=sum/a;
			distance=abs(avg-b[i]);
			total=total+distance;	
		}
		printf("距離和=%d\n",total);
	}
}

我們先將值進行小到大的排序

我們將所有值排好後,將所有值相加後取平均,可得知老大家的位置,再利用此位置與所有親戚家的距離相減取絕對值後,再將所有值相加即為題目規定之答案。

/images/emoticon/emoticon29.gif

Day29就到這啦BYE~


上一篇
Day28-"練習-3"
下一篇
Day30-"總複習"
系列文
C語言救救我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言