题目:全栈项目小组【算法赛】
题目:
解题思路
1.遍历简历信息:我们需要读取所有简历,根据期望薪资和岗位类型进行分类和统计。
2.分类统计:使用哈希表来存储每个薪资下的前端(F)和后端(B)的数量。具体来说,可以用两个哈希表:一个存储期望薪资对应的前端人数,另一个存储期望薪资对应的后端人数。
3.配对:对于每一个薪资等级,能组成的全栈小组数量是该薪资下前端和后端人数的较小值。
例如,若期望薪资为 10000 的有 3 个前端和 2 个后端,那么就能组成 2 个全栈小组。
4.统计结果:最后将所有薪资下能组成的全栈小组数加起来就是结果。
解题代码
#include <stdio.h>
#include <stdlib.h>
#define maxs 1000000
int main()
{
// 请在此输入您的代码
int N;//简历数量
int s;//薪水
int count=0;//最终的小组数
char p;//F|B
int f[maxs+1]={0};//用于计数
int b[maxs+1]={0};//数组初始化,数组中的每个数都为0
scanf("%d",&N);
for (int i=0;i<N;i++){
scanf("%d %c",&s,&p);
if(p=='F'){
f[s]++;//数组中对应薪水索引累加,记录同一个薪水下的F的个数
}
if(p=='B'){
b[s]++;
}
}
for (s=0;s<maxs+1;s++){
count += (f[s]<b[s])?f[s]:b[s];
//遍历每个薪资,返回f和b中数小的个数,加在一起就是最后的全栈小组数
}
printf("%d",count);
return 0;
}