题解 | #数据分类处理#

数据分类处理

https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

#include <stdio.h>
#include <string.h>

int main() {
//  输入
    int In,Rn,i,j,k,l,t;
    scanf("%d",&In);    char I[In][100];
    for(i=0;i<In;i++)   scanf("%s",I[i]);
    scanf("%d",&Rn);    int R1[Rn];
    for(i=0;i<Rn;i++)   scanf("%d",&R1[i]);
//  R1排序并去重复
    for(i=0;i<Rn-1;i++)
    for(j=0;j<Rn-i-1;j++)
    if(R1[j]>R1[j+1]){
        t=R1[j];
        R1[j]=R1[j+1];
        R1[j+1]=t;
    }
    for(i=0;i<Rn-1;i++)
    if(R1[i]==R1[i+1]){
        for(j=i;j<Rn;j++)
        R1[j]=R1[j+1];
        Rn--;i--;
    }
//  把R1变成字符数组R,方便后续比较
    char R[Rn][4];      memset(R,0,sizeof(R));
    for(i=0;i<Rn;i++)
    sprintf(R[i],"%d",R1[i]);
//  开始匹配,求出一个最大的匹配数,及各自的匹配数,及位置;
    int view[Rn][In+1],count;       memset(view,0,sizeof(view));
    for(i=0;i<Rn;i++){//R从第一个数开始匹配
        count=0;
        for(j=0;j<In;j++){//I从第一个数开始匹配
            for(k=0;k<strlen(I[j]);k++){//I的每个数的第一个字符开始检索
                t=-1;//状态数字,表示未匹配上
                if(I[j][k]==R[i][0]){//当存在第一个字符相同的时候,开始检验整个字符段是否完全相同
                    t=0;//表示开始匹配了
                    for(l=1;l<strlen(R[i]);l++)
                        if(I[j][k+l]!=R[i][l]||k+l==strlen(I[j])){
                        t=1;break;} //表示如果有不同或者有一个到了头,数不够,就未匹配上,改变状态数字
                    if(t==0) {count++;view[i][j]=1;break;}//如果状态数字没变代表匹配上了,匹配到的数组信息储存在哈希数组的j里,跳出
                }
            }
        }
        view[i][In]=count;//用这个表示每个r匹配到的数的数量
    }
    //下面就是求总的并输出了
    int all=0;
    for(i=0;i<Rn;i++)
    if(view[i][In]!=0) all+=view[i][In]*2+2;
    printf("%d ",all);
    for(i=0;i<Rn;i++)
    if(view[i][In]!=0){
        printf("%s %d ",R[i],view[i][In]);
        for(j=0;j<In;j++)
        if(view[i][j]!=0)
        printf("%d %s ",j,I[j]);
    }



    return 0;
}

全部评论

相关推荐

秋招进行到现在终于能写总结了。完全没想到战线会拉这么长,过程会如此狼狈,不过更应该怪自己太菜了。好在所有的运气都用在了最后,也是有个去处。背景:双2本硕科班,无竞赛,本科一段研究所实习,硕士一段大厂暑期实习但无转正。技术栈是C++&nbsp;&amp;&nbsp;Golang,实习是客户端音视频(而且是鸿蒙端开发),简历两个C++项目一个Golang项目。主要投递岗位:后端,cpp软开,游戏服务端,测开,以及一些不拘泥于Java的岗位。从8月起总共投递123家公司,笔试数不清了,约面大约30家。offer/oc/意向:友塔游戏(第一个offer,面试体验很好,就是给钱好少南瑞继保(计算机科班点击就送(限男生),不...
乡土丁真真:佬很厉害,羡慕~虽然我还没有到校招的时候,也想讲一下自己的看法:我觉得不是CPP的问题,佬的背书双2,技术栈加了GO,有两段实习。投了123,面了30.拿到11个offer。这个数据已经很耀眼了。这不也是CPP带来的吗?当然也不止是CPP。至少来说在这个方向努力过的也会有好的结果和选择。同等学历和项目选java就会有更好的吗?我个人持疑问态度。当然CPP在方向选择上确实让人头大,但是我觉得能上岸,至于最后做什么方向,在我看来并不重要。至于CPP特殊,有岗位方向的随机性,java不是不挑方向,只是没得选而已。也希望自己以后校招的时候能offer满满
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务