60分,前两个测试点没过,求救大佬😭
查看原帖
60分,前两个测试点没过,求救大佬😭
1548865
Tira_misu楼主2024/12/19 16:09
#include<stdio.h>
#include<string.h>
int main()
{
    int n,len = 0;
    scanf("%d",&n);
    char a[n][105];
    for(int i = 0;i<n;i++)
    {
        scanf("%s",a[i]);
    }
    for(int i = 0;i<n;i++)//把短的字符串去掉,保留最长的字符串
    {
        if(a[i][0]!='\0'&&strlen(a[i])>len)
            len=strlen(a[i]);
        else if(a[i][0]!='\0'&&strlen(a[i])<len)
            a[i][0]='\0';
    }
    for(int i = 0;i<n-1;i++)//依次比较每个数字的大小
    {
        for(int j = i+1;j<n;j++)
        {
            int p = 0;
            if(a[i][0]!='\0'&&a[j][0]!='\0'&&a[i][p]>a[j][p])
            {
                a[j][0]='\0';
            }
            else if(a[i][0]!='\0'&&a[j][0]!='\0'&&a[i][p]<a[j][p])
            {
                a[i][0]='\0';
            }
            else if(a[i][0]!='\0'&&a[j][0]!='\0'&&a[i][p]==a[j][p])
            {
                while(a[i][p]==a[j][p])//如果相等就比较下一位数字
                {
                    p++;
                }
                if(a[i][p]>a[j][p])
                {
                    a[j][0]='\0';
                }
                else if(a[i][p]<a[j][p])
                    a[i][0]='\0';
            }
        }
    }
    for(int m = 0;m<n;m++)//输出结果
    {
        if(a[m][0]!='\0')
        {
            printf("%d\n%s",m+1,a[m]);
        }
    }
    return 0;
}
2024/12/19 16:09
加载中...