九度OJ-题目1195:最长&最短文本-结构体数组比较

来源:互联网 发布:男鞋 知乎 编辑:程序博客网 时间:2024/05/11 04:01

题目链接:http://ac.jobdu.com/problem.php?pid=1195

题目描述:

输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。

输入:

输入包括多行字符串,字符串的长度len,(1<=len<=1000)。

输出:

按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。

样例输入:

hello
she
sorry
he

样例输出:

he
hello
sorry

来源:

2008年华中科技大学计算机研究生机试真题


思路:

结构体比较(必会)+别用二维数组存储免得MLE

AC代码

#include<bits/stdc++.h>#define maxn 1000000using namespace std;struct str{    int no;    int len;    string s;}ss[maxn];int cnt = 0;        char s[1005];int minn = 1001;int maxnn = -1;bool cmp(str  x,  str y){    if(x.len != y.len){        return x.len < y.len;     }    else    return x.no < y.no;    return x.no < y.len;}int main(){    char str[1001];    while(~scanf("%s",str)){        int len = strlen(str);        ss[cnt].no = cnt;        ss[cnt].len = len;        ss[cnt].s = str;        if(len < minn){            minn = len;        }        if(len > maxnn){            maxnn = len;        }        cnt++;    }    sort(ss,ss+cnt,cmp);    for(int i = 0;i < cnt;i++){        if(ss[i].len == minn){            cout << ss[i].s << endl;        }        if(ss[i].len == maxnn){            cout << ss[i].s << endl;        }    }    return 0;}
原创粉丝点击