POJ-Ants-No.1852

POJ-Ants-No.1852
題目描述:
鏈接:http://poj.org/problem?id=1852
這個題就是有n個螞蟻在一根L米長的木棍上爬行,當爬行到端點的時候會掉下木棍,螞蟻的朝向不確定,但是輸入的一律爲朝向左端的距離。
問所有螞蟻掉下木棍的最長和最短時間爲多少?
題目分析:
其實這個題只有計算每隻螞蟻距離兩端的距離即可,長的是最長時間,短的是最短時間。因爲當兩個螞蟻相遇時,可以將兩個螞蟻進行交換,就可以繼續前行。
給出代碼

#include <stdio.h>
#include <stdlib.h>
#include<memory.h>
#include <string.h>
int com(int a,int k,int l);
int num[1000010];
//unsigned long long int gcd(unsigned long long int a,unsigned long long int b);
int main()
{
   int N;
   scanf("%d",&N);
   while(N--)
   {
       int l,n;
       scanf("%d%d",&l,&n);
       int i,j;
       for(i=1;i<=n;i++)
       {
           scanf("%d",&num[i]);
       }
       int sum1=0;
       for(i=1;i<=n;i++)
       {
           if(i==1)
            sum1=com(num[i],1,l);
           else
           {
               if(sum1<com(num[i],1,l))
                sum1=com(num[i],1,l);
           }
       }
       int sum2=0;
       for(i=1;i<=n;i++)
       {
           if(i==1)
            sum2=com(num[i],-1,l);
           else
           {
               if(sum2<com(num[i],-1,l))
                sum2=com(num[i],-1,l);
           }
       }
       printf("%d %d\n",sum1,sum2);
   }
   return 0;
}
int com(int a,int k,int l)
{
    if(k==1)
    {
        int b=l-a;
        if(a>b)
            return b;
        else
            return a;
    }
    else
    {
        int b=l-a;
        if(a<b)
            return b;
        else
            return a;
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章