POJ 2101

来源:互联网 发布:程序员能做到多少岁 编辑:程序博客网 时间:2024/05/29 17:48
题意:第一行要求输入由北向南和由东向西的河流条数,第二行输入由北向南相邻河流间的间距,第三行输入由东向西相邻河流间的间距。
要求输出直升机能检查到所有河流所花费的最少金钱数。(1金钱=1千米)

提供两种代码(⊙o⊙)…

代码1:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
   int n,t;
   double a,l1,l2;
   while(cin>>n>>t)
   {
      l1=l2=0;
      for(int i=1;i!=n;i++)
      {
         cin>>a;
         l1+=a;
      }
      for(int i=1;i!=t;i++)
      {
         cin>>a;
         l2+=a;
      }
      a=sqrt(l1*l1+l2*l2);
      cout<<(a>(int)a?(int)a+1:(int)a)<<endl;
   }
   return 0;
}



代码2:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
   int n,t;
   double *a,*b,m;
   while(cin>>n>>t)
   {
      if(n>=2&&t>=2)
      {
         a=new double[n-1];
         b=new double[t-1];
         cin>>a[0];
         for(int i=1;i<n-1;i++)
         {
             cin>>a[i];
             a[i]+=a[i-1];
         }
         cin>>b[0];
         for(int i=1;i<t-1;i++)
         {
             cin>>b[i];
             b[i]+=b[i-1];
         }
         m=sqrt(pow(a[n-2],2)+pow(b[t-2],2));
         cout<<(m>(int)m?(int)m+1:(int)m)<<endl;
         delete []a;
         delete []b;
      }
      else if(n==1&&t==1)cout<<0<<endl;
      else if(n>=2)
      {
         a=new double[n-1];
         cin>>a[0];
         for(int i=1;i<n-1;i++)
         {
             cin>>a[i];
             a[i]+=a[i-1];
         }
         cout<<(int)a[n-2]<<endl;
         delete []a;
      }
      else if(t>=2)
      {
         b=new double[t-1];
         cin>>b[0];
         for(int i=1;i<t-1;i++)
         {
             cin>>b[i];
             b[i]+=b[i-1];
         }
         cout<<(int)b[t-2]<<endl;
         delete []b;
      }
   }
   return 0;
}
原创粉丝点击