字串的连接最长路径查找

字串的连接最长路径查找

http://www.nowcoder.com/questionTerminal/5af18ba2eb45443aa91a11e848aa6723

#include <stdio.h>
#include <string.h>
int main(void)
{
    char str[1000][100];
    int num;
    scanf("%d", &num);
    for (int i = 0; i < num; i++)
        scanf("%s", str[i]);
    for (int i = 0; i < num; i++)
        for (int j = 0; j < num - i - 1; j++)
            for (int k = 0; k < 100; k++)
            {
                if (str[j][k] > str[j + 1][k])
                {
                    for (int m = 0; m < 100; m++)
                    {
                        int tem = str[j][m];
                        str[j][m] = str[j + 1][m];
                        str[j + 1][m] = tem;
                    }
                    break;
                }
                else if (str[j][k] < str[j + 1][k])
                    break;
            }
    for (int i = 0; i < num; i++)
        printf("%s\r\n", str[i]);
    return 0;
}

全部评论
16行的m赋值为k可以稍微减少交换值的数量
2 回复 分享
发布于 2020-03-11 21:07
#include<stdio.h> (737)#include<string.h> int main(void){ int num; scanf("%d", &num); int i, j, k; char str[1001][101]; for(i = 0; i < num; i++){ scanf("%s", str[i]); for(j = 0; j < i; j++){ for(k = 0; k < 100; k++){ if(str[j][k] > str[i][k]){ int temp; for(int m = k; m < 100; m++){ temp = str[j][m]; str[j][m] = str[i][m]; str[i][m] = temp; break; } } else break; } } } /* for(i = 0; i < num; i++){//i代表个数 j代表次数 代表内容 for(j = 0; j < num - 1 - i; j++){ for(k = 0; k < 100; k++){ if(str[j][k] > str[j + 1][k]){ for(int m = k; m < 100; m++){ int tem = str[j][m]; str[j][m] = str[j + 1][m]; str[j + 1][m] = tem; } break; } else if(str[j][k] < str[j + 1][k])break; } } }*/ for(i = 0; i < num; i++){ printf("%s\r\n", str[i]); } return 0; } 你好,能帮我看一下什么地方错了吗?我是一个个的输入,类似于插队,来一个和前面比较,一直找到比它大,然后换。
1 回复 分享
发布于 2020-03-12 22:46
对C来说太麻烦了
点赞 回复 分享
发布于 2022-02-11 18:00

相关推荐

3 2 评论
分享
牛客网
牛客企业服务