没有用 strcmp 与 strcpy 我憨了

字串的连接最长路径查找

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

//我是憨憨
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>


bool cmp(char * str1, char * str2);
void exchange(char * str1, char * str2);


int main()
{
    int len, i, j, k;
    scanf("%d\n", &len); // 这个 \n 是用来吸收回车符
    char str[len][20];
    for (i=0; i<len; i++)
    {
        gets(str[i]);
        for (j=0; j<i; j++)
        {
            if ( cmp(str[j], str[i]) ) //插入点的值比之前的小
            {
//                printf("strj is %s, stri is %s\n", str[j], str[i]);
                for (k=i; k>j; k--) // 类似冒泡排序往前移
                {
                    exchange(str[k],str[k-1]);
                }
                break;
            }
        }
    }

    for ( i=0; i<len; i++)
    {
        printf("%s\n", str[i]);
    }

    return 0;
}

void exchange(char * str1, char * str2)
{
    int len;
    char temp;
    if (strlen(str1) > strlen(str2))
        len = strlen(str1);
    else
        len = strlen(str2);
    for (int i=0; i<len+3; i++)
    {
        temp = str1[i];
        str1[i] = str2[i];
        str2[i] = temp;
    }
}

bool cmp(char * str1, char * str2)
{
    for (int i=0; i<strlen(str1); i++)
    {
        if ((int)str1[i] > (int)str2[i])
        {
            return true;//  str2 比 str1 小
        }
        else if ((int)str1[i] < (int)str2[i])
        {
            return false;
        }
    }
    return false;

}


全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

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