9 도 OJ - 제목 1195: 최 장 & 최 단 텍스트 - 구조 체 배열 비교

3056 단어 연구 생기 시험
제목 링크:http://ac.jobdu.com/problem.php?pid=1195
제목 설명:
여러 줄 의 문자열 을 입력 하 십시오. 원본 의 순서에 따라 가장 짧 고 긴 문자열 을 출력 하 십시오. 가장 짧 고 긴 문자열 이 하나 가 아니라면 모두 출력 하 십시오.
입력:
여러 줄 문자열, 문자열 의 길 이 를 포함 하 는 len 을 입력 하 십시오. (1 < = len < = 1000)
출력:
원본 의 순서에 따라 가장 짧 고 긴 문자열 을 출력 합 니 다. 가장 짧 고 긴 문자열 이 하나 가 아니라면 모두 출력 하 십시오.
샘플 입력:
hello she sorry he
샘플 출력:
he hello sorry
원본:
2008 년 화중과기대학 컴퓨터 연구 생기 시험 문제
생각:
구조 체 비교 (필수) + MLE 없 이 2 차원 배열 로 저장 하지 마 세 요.
AC 코드
#include
#define maxn 1000000
using 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;
}

좋은 웹페이지 즐겨찾기