POJ1696-Space Ant

来源:互联网 发布:数组方法的使用 编辑:程序博客网 时间:2024/06/06 02:47

  说说这道题的感悟。。这样的题我觉得还是看你的思维是否缜密。。我写这个程序的时候漏洞百出。

在赋值的时候,把差值赋给了下一个初始的angel导致一直WA。。下次一定要先想好再写,否则写的时候漏洞百出。。

#include <iostream>#include <cmath>using namespace std;const double pi = atan2( 0.0 , -1.0 );const double eps = 1e-10;bool res[51];double beangel;struct point{    int x, y;    /*void input()    {        cin >> x >> y;    }    */    int len()    {        return x * x + y * y ;    }};point p0;point a[51];point dec( point a , point b ){    point c;    c.x = a.x - b.x;    c.y = a.y - b.y;    return c;}int cross( point a , point b){      return a.x * b.y - a.y * b.x;}int sorta( point a[] , int n ){      int flag = 0;    double angel = 999, tempang;    double angelll, tempanglll;    for( int i = 1 ; i <= n ; i ++ )    if( res[i] )    {           if( a[i].y >= p0.y )        tempang = atan2( a[i].y * 1.0 - p0.y * 1.0 , a[i].x * 1.0 - p0.x * 1.0 );        else         tempang = 2 * pi + atan2( a[i].y * 1.0 - p0.y * 1.0 , a[i].x * 1.0 - p0.x * 1.0 );        tempanglll = tempang;        tempang -= beangel;        if( tempang < -eps ) tempang += 2 * pi;        if( tempang - angel < -eps )        {             angel = tempang;             flag = i;             angelll = tempanglll;        }        else if( tempang - angel < eps && dec( a[i] , p0 ).len() < dec ( a[flag] , p0 ).len() )        {             flag = i;             angel = tempang;             angelll = tempanglll;        }    }    res[flag] = false;    beangel = angelll;    p0.x = a[flag].x;    p0.y = a[flag].y;    return flag;}int main(){int kase, n, i, m, min, f, num[51], temp;    cin >> kase;    while( kase-- )    {        cin >> n;        m = n - 1;        min = 12354;        for( i = 1 ; i <=n ; i ++ )        {            cin >> num[i];            //a[i].input();            cin >> a[i].x;            cin >> a[i].y;            if( a[i].y < min ) {    min = a[i].y;    f = i;}            res[i] = true;        }        res[f] = false;cout << n;cout << " " << num[f];        p0.x = a[f].x;        p0.y = a[f].y;        beangel = 0;        while( m )        {            temp = sorta( a , n );            cout << " " << num[temp];            m--;        }        cout << endl;    }    return 0;}



0 0
原创粉丝点击