题解 | #查找兄弟单词#

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

#include <stdio.h>
#include <string.h>
struct ZD{
    char a[10],atoo[10];
    int pd;
};
//长度函数
int cd(char n[]){
    int i=0;
    while(n[i]!=0) i++;
    return i;
}
//排序函数
void px(char n[]){
    int i,j,t;
    t=cd(n);
    char k;
    for(i=0;i<t-1;i++)
    for(j=0;j<t-1-i;j++)
    if(n[j]>n[j+1]){
        k=n[j];
        n[j]=n[j+1];
        n[j+1]=k;
    }
}
int main() {
    //信息全部输入
    int n,k,i,j,num=0;
    scanf("%d",&n);
    struct ZD t[n],temp;
    for(i=0;i<n;i++){
    scanf("%s",t[i].a);
    strcpy(t[i].atoo,t[i].a);
    }
    char b[10],btoo[10];
    scanf("%s",b);
    strcpy(btoo,b);
    scanf("%d",&k);

    //判断是否为兄弟单词
    px(btoo);
    for(i=0;i<n;i++){
        px(t[i].atoo);
    }
    for(i=0;i<n;i++){
        j=0;
        if(strcmp(t[i].atoo,btoo)==0&&strcmp(t[i].a,b)!=0){
        j=1;num++;}
        t[i].pd=j;
    }
  //输出次数
    printf("%d\n",num);
  //删除非兄弟单词
    for(i=0;i<n;i++){
        if(t[i].pd==0){
        for(j=i;j<n;j++)
        t[j]=t[j+1];
        n--;i--;
    }}
  //对剩余的兄弟单词进行字典排序
    for(i=0;i<n-1;i++)
    for(j=0;j<n-1-i;j++)
    if(strcmp(t[j].a,t[j+1].a)>0){
        temp=t[j];
        t[j]=t[j+1];
        t[j+1]=temp;
    }
  //判断第K个是否存在并输出
    if(k<=n)
    printf("%s",t[k-1].a);

    return 0;
}

全部评论

相关推荐

02-10 13:41
西南大学 Java
点赞 评论 收藏
分享
ros275229:社团删了吧,cf因该1200才勉强入门吧,也删了,你可以写算法刷了多少道,都比这个好
点赞 评论 收藏
分享
2025-12-17 15:08
赤峰学院 Java
乐邦詹雨:学历厂,另外东子不同部门待遇进的难度天差地别,我同学零售一面1h30min有八股算法项目拷打,我就两轮技术面各30min就一面问了些技术问题,二面问了两个开放式技术问题,三面线下hr面就结束了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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