#19ACM第一次招新补题赛de题解呐#

本文是关于ACM招新补题赛的题解合集,包括多种类型的题目,如字符串处理、判断条件、算法应用等。通过题目描述和解题代码,帮助读者理解并学习各种算法思想。
摘要由CSDN通过智能技术生成

听说需要交一份题解?


A.最简单签到,没有之一

不得不说这道简单签到 太强了…
先来看看题目吧 ↓

描述:
此题简单如题意,就是求最大值

输入:
多组输入
每组输入输入一串字符串(包括字母和数字),长度小于500

输出:
每行输出字符ASCII值与出现次数乘积的最大值

输入样例 1:                                            输出样例 10aA                                                    97
aaaaa                                                  485
0000az                                                 192

提示:
0000az:
‘0’出现448*4=192
‘a’出现197*1=97
‘z’出现1122*1=122

这道题的大致思路就是将字符串中每个字符的ASCII值与其出现的次数相乘,比较每个不同字符所得的乘积的大小,输出最大值。来瞅瞅代码吧 ↓

#include<stdio.h>
#include<string.h>
char a[550];                   //定义一个字符串数组,用来存放输入值
int main()
{
   
    while(~scanf("%s",a))      //多组输入
    {
   
        int b[550]={
   0};        //定义一个数组用于存放字符出现次数,并对其赋初值0
        int maxx=-1;           //定义maxx用于之后的最大值比较,初值尽量为取不到的小值
        int l=strlen(a);           
        for(int i=0;i<l;i++)
        {
   
            b[a[i]]+=1;        //统计对应字符出现次数,其中a[i]强制转换为数值型,即对应字符的ASCII值
        }
        for(int k=0;k<200;k++)
        {
   
            if(maxx<b[k]*k)
            {
   
                maxx=b[k]*k;   //比较取最大值
            }
        }
        printf("%d\n",maxx);   //输出最大值结果
    }
    return 0;
}

B.wr学姐的小调查

感谢wr学姐送出的一道 比最简单签到更容易想到的签到题 ↓

描述:
wr学姐想调查工作室学长学姐的生日,并按照从大到小的顺序排序。
但wr学姐最近作业很多,没有时间,所以请你帮她排序。

输入:
有2行,
第1行为工作室总人数n;
第2行至第n+1行分别是每人的姓名s、出生年y、月m、日d。

输出:
有n行,
即n个生日从大到小学长学姐的姓名。(如果有两个学长学姐生日相同,输入靠后的学长学姐先输出)

输入样例 1:                              输出样例 1
3                                        xsaxs
xsaxs 1999 2 15                          kuzhese    
kuzhese 2000 12 5                        uixes
uixes 2001 2 4

能够看出,用结构体和快排的知识可以解决wr学姐的这份礼物,来看看代码吧 ↓

#include<stdio.h>
#include<algorithm>
using namespace std;
struct person                   //结构体定义
{
   
    char name[20];
    int y;
    int m;
    int d;
}v[455];
bool cmp(person a,person b)     //bool型函数的运用
{
   
	if(a.y==b.y)                //判断年份是否相同,不同则返回按大到小排,否则比较月份
    {
   
        if(a.m==b.m)            //判断月份是否相同,不同则返回按大到小排,否则比较日期
        {
   
            if(a.d==b.d)        //判断日期是否相同,不同则返回按大到小排,返回后者的姓名
            {
   
                return b.name;
            }
            return a.d>b.d;
        }
        return a.m>b.m;
    }
    return a.y<b.y;
}
int main()
{
   
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
    {
   
       scanf("%s%d%d%d",v[i].name,&v[i].y,&v[i].m,&v[i].d);
    }
    sort(v+1,v+n+1,cmp);        //快排语句,引用了外部函数      
    for(int i=1;i<=n;i++)
    {
   
        printf("%s\n",v[i].name);
    }
    return 0;
}

C. 小仙女的烦恼(三)

小仙女是烦恼了,但tql的你看到这题应该不烦恼吧,嘿嘿,看题 ↓

描述:
小仙女最近吃胖了不少,她很郁闷,很怕被人说胖,但是如果班上有女生比她更胖,她就会充满动力啦~
众所周知,xxn现在体重120,班上有n个人,如果有女生的体重比她重,她就会很开心,否则她将超级难过!!!!

输入:
多组输入没次输入一个整数n,代表n行。
之后n行每行一个数字a和一个字符串s分别代表体重和性别(0<=a<=1000)

输出:
如果xxn开心的话输出 "hhh",否则输出 " yyy";

输入样例 1                        输出样例 1
2                                hhh
120 woman
130 woman

本题主体为判断 体重值是否大于120 以及 性别是否为woman,且要注意这是多组输入题!看代码 ↓

#include<stdio.h>
#include<string.h>
int main()
{
   
    int c[1000];
    int d[1000];
    char b[1000];
    int n,a;
    while(~scanf("%d",&n))          //多组输入数据n 
    {
   
        int i=0;
        while(i<n)
        {
   
        scanf("%d%s",&a,b);         //输入n条数据
        if(a>120)
        {
   
            d[i]=1;                 //体重符合的标记1,否则标记0
        }
        else
        {
   
            d[i]=0;
        }
        int l=strlen(b)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值