题解 | #计算某字母出现次数#

合并表记录

http://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

该题主要麻烦在,对index排序,同时对应的value值需要同序;累加后,同index需要合并。 解决方案如下: 1、利用struct和qsort进行排序。 2、由于value的值大于1,在判断index相等时,令后出现的index对应的value为零,最终在输出的时候,跳过value为零的情况。

#include <stdio.h>
#include <stdlib.h>
 struct test{int index; int value;
    }data[500];
int compare(const void* a, const void* b){
    return((*(test*) a).index-(*(test*) b).index);
}
int main(){
    int number;
    int i;
    while(scanf("%d",&number)!=EOF){
            for(i=0;i<number;i++){
                scanf("%d%*c%d\n",&data[i].index,&data[i].value);
            }
        for (i=0;i<number;i++){
            for(int j=i+1;j<number;j++){
                if(data[i].index==data[j].index){
                    data[i].value+=data[j].value;
                    data[j].value=0;
                }
            }
        }
        qsort(data, number, sizeof(data[0]), compare);
        for (i=0;i<number;i++){
            if(data[i].value!=0){
             printf("%d %d\n", data[i].index, data[i].value);
            }
            ;
             }
    }
   return 0;
}
全部评论
第六行 "test" 有问题 这里应替换为"struct test"
3 回复 分享
发布于 2022-01-05 17:29
请问compare函数参数类型为什么是void啊
点赞 回复 分享
发布于 2023-04-28 11:11 辽宁
总算见识到qsort()函数的用途了,还可以比较结构体数组,佩服。
点赞 回复 分享
发布于 2022-03-26 23:58

相关推荐

不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
7
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务