美文网首页
ECNU机试之判断“东西越贵越好”的命题

ECNU机试之判断“东西越贵越好”的命题

作者: DaSE_Bee | 来源:发表于2017-10-07 18:33 被阅读0次

    由于题目比较长,并且时间已久,我只记得题目大概的意思:给出N个商品的价格和质量,判断“东西越贵越好”这个命题是否正确。

    Input

    第1行,一个数N,N为商品的数量。(2 <= N <=100)

    第2 - N + 1行:具体N个商品的价格和质量。

    Output

    判断是否符合“东西越贵越好”这个命题,输出yes/no。

    Input示例

    6
    1 2
    3 5
    4 8
    6 9
    10 13
    15 18

    5
    1 3
    3 6
    5 8
    6 7
    7 10

    Output示例

    yes

    no

    解题思想:与求最大斜率那题类似,将商品按价格排序,对比相邻两个商品的质量,判断是否存在“价格变高,质量却降低”的情况。

    参考代码(没有用STL):

    #include <iostream>
    
    using std::cin;
    using std::cout;
    using std::endl;
    
    struct node //存储商品的信息
    {
        float x,y;
    };
    
    int main()
    {
        bool flag=true;
        int n=0;
        while(cin>>n)
        {
            node nodes[50];
    
            for(int i=0; i<n; i++)
            {
                cin>>nodes[i].x>>nodes[i].y;
            }
    
            for(int i=n; i>0; i--)//商品按价格排序
            {
                for(int i=0; i+1<n; i++)
                {
                    if(nodes[i].x>nodes[i+1].x)
                    {
                        node temp;
                        temp=nodes[i];
                        nodes[i]=nodes[i+1];
                        nodes[i+1]=temp;
                    }
                }
            }
    
            for(int i=1; i<n; i++)//遍历价格相近商品的质量
            {
                if(nodes[i].y-nodes[i-1].y<=0)//寻找是否存在价格高的商品质量却比价格低的差
                {
                    flag=false;
                    break;
                }
            }
    
            if(flag==true)//输出结果
            {
                cout<<"yes"<<endl;
            }
            else cout<<"no"<<endl;
    
        }
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:ECNU机试之判断“东西越贵越好”的命题

          本文链接:https://www.haomeiwen.com/subject/wdgjyxtx.html