没有用 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;
}

查看23道真题和解析