描述
童年的我们,对各种事物充满了好奇与向往。这天,小朋友们对数字产生了兴趣,并且想和数字交朋友。可是,怎么分配这些数字才能使得每个小朋友都唯一地找到一个数字朋友呢?C小朋友说:咱们按自己名字的字典序先后,依次选择一个剩余的最小的数字当朋友。好么?Q小朋友十分赞同。于是,大家都同意了。
输入格式
第一行为一个数n,为小朋友数和数字数。
下面n行为小朋友们的名字。
再下面n行为候选的n个数字。
输出格式
n行,按字典序输出n个小朋友姓名及所选的数字朋友。
测试样例1
输入
5
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\n",a[i]); } return 0; }一言不合就int,懒(bù)得(huì)用(yòng)vector
另,字符串比较规则:
比较的时候,从字符串左边开始,一次比较每个字符,直接出现差异、或者其中一个串结束为止。
比如ABC与ACDE比较,第一个字符相同,继续比较第二个字符,由于第二个字符是后面一个串大,所以不再继续比较,结果就是后面个串大。
再如ABC与ABC123比较,比较三个字符后第一个串结束,所以就是后面一个串大。
所以,长度不能直接决定大小,字符串的大小是由左边开始最前面的字符决定的。
时间: 2024-11-08 13:18:42