注册 登录
编程论坛 C++教室

小Y的悲剧

King小象 发布于 2013-05-16 18:56, 335 次点击
Description
话说小Y后宫三千之后,他突然发现,他的钱不够了。于是他决定休几妻子。修几个呢?想了很久之后,小Y终于痛苦地决定,修一个。于是按照心仪值,休心仪值最高的那个。为什么呢?因为: 心仪值=(身高-x)*10+(体重-y) 。
Input
首先n,表示有n个女生。(n < 10000)接下来n行每行两个数a,b;分别表示身高体重。(0 < a , b < 10000 ) 最后输入x,y。
Output 修了的那个女神的身高和体重
Sample Input
3
2.06 51.98
1.87 54.34
1.63 41.66
1.69 38.54
Sample Output
1.87 54.34

求高手,帮忙编下程序,或者说清思路啊。谢谢了~~
2 回复
#2
shangsharon2013-05-16 21:00
先说明一下,C++才接触几天,玩OJ时用C++,简单学了几天,正好这个题像OJ的题目.展示一下.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int in,count=0;
    cin>>in;

    vector<double> v_w,v_h;

    double h,w;

    while(count<in)
    {
        cin>>h>>w;

        v_h.push_back(h);

        v_w.push_back(w);

        ++count;
    }
   
    double x,y;

    cin>>x>>y;
   
    double out_h=0.00f,out_w=0.00f,love=0.00f;

    for(vector<double>::iterator iter_h=v_h.begin(),iter_w=v_w.begin();iter_h!=v_w.end()&&iter_w!=v_w.end();++iter_h,++iter_w)
    {
        double t_love=(*iter_h-x)*10+*iter_w-y;

        if(love<t_love)
        {
            out_h=*iter_h;

            out_w=*iter_w;

            love=t_love;
        }
    }

    cout<<out_h<<" "<<out_w;

    return 0;
}
#3
justlxy2013-05-16 21:10
#include<stdio.h>
void main()
{
    int n;
    printf("请输入小Y共有几个爱妃:\n");
    scanf("%d",&n);
    float *a,*b,*xyz,x,y;
    a=new float[n];
    b=new float[n];
    xyz=new float[n];
    printf("请依次分别输入各位爱妃的身高和体重:\n");
    for(int i=0;i<n;i++)
    {
        scanf("%f",&a[i]);
        scanf("%f",&b[i]);
    }
    printf("再输入自己的身高和体重:\n");
    scanf("%f %f",&x,&y);
    for(i=0;i<n;i++)
        xyz[i]=(a[i]-x)*10+(b[i]-y);
    float q=xyz[0];
    for(i=0;i<n;i++)
        q=(q>xyz[i])?q:xyz[i];
    for(i=0;i<n;i++)
        if(q==xyz[i])
        {
            printf("%f %f",a[i],b[i]);
            break;
        }
    delete []a;
    delete []b;
    delete []xyz;
}

[ 本帖最后由 justlxy 于 2013-5-16 21:15 编辑 ]
1