鱼C论坛

 找回密码
 立即注册
查看: 1534|回复: 3

新人求助poj1328,求帮忙, 感谢!!!!

[复制链接]
发表于 2014-7-24 16:51:42 | 显示全部楼层 |阅读模式
4鱼币
本帖最后由 勿语静候 于 2014-7-25 08:46 编辑
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;

struct island{
        double x;
        double y;
        double distance;
        double t =  pow((distance * distance - y * y),0.5);
        
        double start = ceil(x - t);
        double end = floor(x + t);
};

void sort(double *start,int landNum)//用雷达区间起始点排序岛屿
{
        for(int i = landNum - 1;i > 0;i--)
        {
                if(start[i] < start[i - 1])
                {
                        double temp = start[i - 1];
                        start[i - 1] = start[i];
                        start[i] = temp;
                }
        }
}


//size是已经存入容器中岛屿个数
//a[]是已经存入岛屿的结束点 
//start是当前岛屿起始点 


int test(int size ,double* a,double start)
{
        int flag = 1; 
        for(int i = 0;i < size;i++)
        {
                if(start <= a[i])
                        flag = 0;
        }        
        return flag;
}




int main()
{
        //input
        int islandNum;
        double radarDistance;
        int d = 1;
        while (cin >> islandNum >> radarDistance&&(islandNum || radarDistance))
        {
                island island[islandNum];
                for(int i = 0;i < islandNum;i++)
                {
                        cin >> island[i].x >> island[i].y;
                        island[i].distance = radarDistance;
                }
                
                double start1[islandNum];//存储所有岛屿的雷达区间起始点 
                for(int i = 0;i < islandNum;i++)
                {
                        start1[i] = island[i].start;
                }
                sort(start1,islandNum);
                
                vector<int> islandSubcript;//存储被选中雷达的岛屿下标
                islandSubcript.push_back(0);//第一个岛屿必然被选中
                
                for(int i = 1;i < islandNum;i++)
                {
                        //比较当前第i+1岛屿与之前所有岛屿的结束点,若符合加入容器
                        double a[islandSubcript.size()];//存储所有岛屿结束点
                        for(int j = 0;j < islandSubcript.size();j++)
                        {
                                a[j] = island[j].end;
                        } 
                        
                        double s = island[i].start;
                        if(test(islandSubcript.size(),a,s))
                        {
                                islandSubcript.push_back(i);
                        }
                }
                cout << "Case " << d++<<": " <<islandSubcript.size()<<endl;
        }
        
return 0;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-26 22:30:16 | 显示全部楼层
你想干麻你说清一点呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-23 18:47:51 | 显示全部楼层
你这是什么意思,说清楚!!!:sweat:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-6 10:24:22 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 06:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表