nyoj263精挑细选

来源:互联网 发布:任我行软件 编辑:程序博客网 时间:2024/06/06 03:07

这道题思路应该不少,这类题也很常见,就是有三个量让你进行比较,按照一定的顺序和一定的规则进行排布,然后输出相关的量,这道题我一共有两种方法,第一种比较繁琐,但是就是熟练一下类的使用,第二种是比较简单的方法,我都贴上,你可以比较一下。

精 挑 细 选时间限制:3000 ms  |  内存限制:65535 KB难度:1描述    小王是公司的仓库管理员,一天,他接到了这样一个任务:从仓库中找出一根钢管。这听起来不算什么,但是这根钢管的要求可真是让他犯难了,要求如下:    1、 这根钢管一定要是仓库中最长的;    2、 这根钢管一定要是最长的钢管中最细的;    3、 这根钢管一定要是符合前两条的钢管中编码最大的(每根钢管都有一个互不相同的编码,越大表示生产日期越近)。    相关的资料到是有,可是,手工从几百份钢管材料中选出符合要求的那根……     要不,还是请你编写个程序来帮他解决这个问题吧。    输入        第一行是一个整数N(N<=10)表示测试数据的组数)        每组测试数据的第一行 有一个整数m(m<=1000),表示仓库中所有钢管的数量,        之后m行,每行三个整数,分别表示一根钢管的长度(以毫米为单位)、直径(以毫米为单位)和编码(一个9位整数)。    输出        对应每组测试数据的输出只有一个9位整数,表示选出的那根钢管的编码,        每个输出占一行    样例输入        2        2        2000 30 123456789        2000 20 987654321        4        3000 50 872198442        3000 45 752498124        2000 60 765128742        3000 45 652278122    样例输出        987654321        752498124
#include<iostream>using namespace std;class stern{    int length;    int r;    string bianhao;    public:        int getl(){            return length;        }        int getr(){            return r;        }        string getb(){            return bianhao;        }        void cinl(int l){            length=l;        }        void cinr(int r1){            r=r1;        }        void cinb(string  bia){            bianhao=bia;        }};int main(){    int n;    cin>>n;    while(n--){     int m;     cin>>m;     int length;     int r;     string bianhao;     stern max;     max.cinb("00000000");     max.cinl(0);     max.cinr(0);     while(m--){            cin>>length;            cin>>r;            cin>>bianhao;            if(max.getl()<length){             max.cinl(length);             max.cinb(bianhao);             max.cinr(r);            // cout<<" yes "<<endl;              continue;            }           // cout<<" ajsd"<<endl;           // cout<<max.getr()<<length<<endl;            if(max.getl()==length&&max.getr()>r){                max.cinr(r);                max.cinb(bianhao);                max.cinl(length);                //cout<<" ysss "<<endl;                continue;         }          if(max.getb()<bianhao&&max.getl()==length&&max.getr()==r){            max.cinb(bianhao);            max.cinl(length);            max.cinr(r);            continue;         }      }    cout<<max.getb()<<endl;    }    return 0;}

第二种方法

#include<iostream>using namespace std;int main(){    int n;    cin>>n;    while(n--){        int m;        cin>>m;        int l,r;        string bianhao;        int lmax=0;        int rmin=0;        string bianhaomax="00000000";        while(m--){            cin>>l>>r>>bianhao;            if(l>lmax||l==lmax&&r<rmin||l==lmax&&r==rmin&&bianhao>bianhaomax){                lmax=l;                rmin=r;                bianhaomax=bianhao;            }        }        cout<<bianhaomax<<endl;    }    return 0;}
原创粉丝点击