听说需要交一份题解?
A.最简单签到,没有之一
不得不说这道简单签到 太强了…
先来看看题目吧 ↓
描述:
此题简单如题意,就是求最大值
输入:
多组输入
每组输入输入一串字符串(包括字母和数字),长度小于500
输出:
每行输出字符ASCII值与出现次数乘积的最大值
输入样例 1: 输出样例 1:
0aA 97
aaaaa 485
0000az 192
提示:
0000az:
‘0’出现4次 48*4=192
‘a’出现1次 97*1=97
‘z’出现1次 122*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)