Problem 2088 最长队名 字典序,qsort考察

本文介绍了一道关于构造最长队名的问题,旨在寻找字典序最小的组合方式。通过使用qsort函数配合自定义比较函数,实现了对名字列表的有效排序。提供了两种实现方案,包括直接使用string类型和结构体类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                   Problem 2088 最长队名

Accept: 319    Submit: 681
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

Jack所在的班级决定组团报名参加FZU校赛。为了体现班级的团结和睦,班长决定用班级所有人的名字连起来组成一个史上最长最醒目的队名。

因为听说在分数相同的情况下,队名字典序小的会排在更前面,班长还希望连成的史上最长队名拥有最小的字典序。

 Input

输入数据第一行包含一个整数T,表示测试数据的组数。对于每组测试数据:

第一行为一个整数n(0<n<=10000),表示班级成员数。

接下来n行为班级每个人的名字。名字由小写字母组成,每个人名字长度均相同。

 Output

对于每组测试数据,输出一行,表示连接成的史上最长队名。

 Sample Input

13jimtomjoe

 Sample Output

jimjoetom
 
 
 
这道题目主要是考察qsort中字典序的排列,好好学学就是了
 
 
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
int cmd(const void* a,const void* b)
{
    return *(string*)a>*(string*)b?1:*(string*)a==*(string*)b?0:-2;
}
int main()
{
    string s[10010];
    int t,i,j,n;
    scanf("%d",&t);
    while(t--)
    {

        scanf("%d",&n);
        for(i=0;i<n;i++)
        cin>>s[i];
        qsort(s,n,sizeof(string),cmd);
        for(i=0;i<n;i++)
        //printf("%s",s[i]);
        cout<<s[i];
        printf("\n");
    }
    return 0;
}

 
 另一种方法,用strcmp
 
#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
#include<iostream>
#include<cstring>
using namespace std;
struct In
{
char str[100];
}s[10010];

//按照结构体中字符串str的字典顺序排序
int cmp ( const void *a , const void *b )
{
return strcmp( (*(In *)a).str , (*(In *)b).str );
//return strcmp((*(In*)a)->str,(**In*)b->str);
}

//qsort(s,100,sizeof(s[0]),cmp);
int main()
{
   int i,j,t,n;
   scanf("%d",&t);
   while(t--)
   {
    scanf("%d",&n);
    for(i=0;i<n;i++)
    cin>>s[i].str;
    qsort(s,n,sizeof(s[0]),cmp);
    for(i=0;i<n;i++)
    cout<<s[i].str;
    cout<<endl;

   }
    return 0;
}



 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值