172_起重机 Carane (POj 2991)

来源:互联网 发布:联通5g网络 编辑:程序博客网 时间:2024/05/17 05:17

 题源来自《挑战程序竞赛》第二版170页。思路没有书上写的那么复杂,注意角度问题,基本实现了功能。

////  170_Crane.cpp//  changlle////  Created by user on 1/18/16.//  Copyright (c) 2016 user. All rights reserved.//#include <iostream>#include <math.h>using namespace std;const int MAX=10;int N=3;int C=2;int L[4]={5,5,5};int S[2]={1,2};int A[2]={270,90};void solve() {        int sum=0;    for (int i=0;i<N;i++)        sum+=L[i];    double x[MAX];    double y[MAX];    double last_x[MAX];    double last_y[MAX];    int ind=0;    fill(x,x+MAX,0);    fill(y,y+MAX,0);    fill(last_x,last_x+MAX,0);    fill(last_y,last_y+MAX,0);        for ( int i=0;i<S[0];i++)    { last_y[0]+=L[i];        sum-=L[i];        ind=i+1;    }        double ang=90.0;            for (int i=0;i<C;i++) {        int ll=0;        while(ind<S[i+1] && ind<N){                        ll+=L[ind];            sum-=L[ind];            ind++;        }                        ang=A[i]+(ang+180.0);        last_x[i+1]=last_x[i]+cos((ang)/180.0*3.14159)*ll;        last_y[i+1]=last_y[i]+sin((ang)/180.0*3.14159)*ll;                    x[i+1]=last_x[i]+cos((ang)/180.0*3.14159)*(sum+ll);        y[i+1]=last_y[i]+sin((ang)/180.0*3.14159)*(sum+ll);                    }        for (int i=1;i<=C;i++){        cout<<x[i]<<"   "<<y[i]<<endl;    }    }int main() {        solve();    }


0 0
原创粉丝点击