TYVJ P1082 找朋友 Label:字符串

描述

童年的我们,对各种事物充满了好奇与向往。这天,小朋友们对数字产生了兴趣,并且想和数字交朋友。可是,怎么分配这些数字才能使得每个小朋友都唯一地找到一个数字朋友呢?C小朋友说:咱们按自己名字的字典序先后,依次选择一个剩余的最小的数字当朋友。好么?Q小朋友十分赞同。于是,大家都同意了。

输入格式

第一行为一个数n,为小朋友数和数字数。
下面n行为小朋友们的名字。
再下面n行为候选的n个数字。

输出格式

n行,按字典序输出n个小朋友姓名及所选的数字朋友。

测试样例1

输入


src 
oldway 
claire 
whqsdhr 
ylq 
89757 
20091111 
130203 
8000800 
1008611

输出

claire 89757 
oldway 130203 
src 1008611 
whqsdhr 8000800 
ylq 20091111

备注

100%的数据满足:1<=n<=10000,每个数字均不超过1 500 000 000 (1.5*10^9)

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

struct node{
    string str;
}b[10005];

bool cmp(node a,node b){
    return a.str<b.str;
}

int a[10005];
int N;
int main(){
    scanf("%d",&N);
    string s;
    for(int i=0;i<N;i++){
//        scanf("%s",b[i].str);
        cin>>b[i].str;
    }
    for(int i=0;i<N;i++){
        scanf("%d",&a[i]);
    }
    sort(b,b+N,cmp);
    sort(a,a+N);
    for(int i=0;i<N;i++){
        cout<<b[i].str;
        printf(" %d
",a[i]);
    }
    return 0; 
}

一言不合就int,懒(bù)得(huì)用(yòng)vector

另,字符串比较规则:

比较的时候,从字符串左边开始,一次比较每个字符,直接出现差异、或者其中一个串结束为止。

比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后面一个串大,所以不再继续比较,结果就是后面个串大。

再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。

所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
原文地址:https://www.cnblogs.com/radiumlrb/p/5783532.html