24h購物| | PChome| 登入
2009-10-02 22:33:12| 人氣1,164| 回應0 | 上一篇 | 下一篇

板橋高中98資訊能力競賽 直線最小距離和

推薦 0 收藏 0 轉貼0 訂閱站台

作法 : 排序

排序好,把中位數取出來,之後把所有距離加總即可

你也可以試著窮舉所有點.

/*************************************************************/

#include <stdlib.h>
#include <stdio.h>
int partition(int [],int ,int);
void quicksort(int [], int ,int);
main()
{
   int t,n,a,b,c;
   scanf("%d",&t);
   while(t--)
      {
          scanf("%d",&n);
          int num[1001]={0};
          for(a=0;a<n;a++)
             scanf("%d",&num[a]);
          quicksort(num,0,n-1);
          int ss=(num[n/2]+num[(n-1)/2])/2,sum=0;
          for(a=0;a<n;a++)
             sum+=abs(ss-num[a]);
          printf("%d\n",sum);
      }
   return 0;
}
int partition (int num[],int left ,int right)
{
   int a=left-1,b,s=num[right],temp;
   for(b=left;b<right;b++)
       if(num[b]>=s)
          {
             a++;
             temp=num[a];
             num[a]=num[b];
             num[b]=temp;
          }
       temp=num[a+1];
       num[a+1]=num[right];
       num[right]=temp;
    return a+1;
}
void quicksort (int num[],int left,int right)
{
   int q;
   if(left<right)
      {
        q=partition(num,left,right);
        quicksort(num,left,q-1);
        quicksort(num,q+1,right);
      }
}

台長: 來源不明
人氣(1,164) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 資訊競賽 |
此分類下一篇:板橋高中98資訊能力競賽 最短距離
此分類上一篇:96高市資訊學科能力競賽 第四題:數獨遊戲

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文