华为机试 - 13 字串的连接最长路径查找
字串的连接最长路径查找
http://www.nowcoder.com/questionTerminal/5af18ba2eb45443aa91a11e848aa6723
题目描述
给定n个字符串,请对n个字符串按照字典序排列。
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。
示例1
输入
9 cap to cat card two too up boat boot
输出
boat boot cap card cat to too two up
解题思路
字符串排序
1 排序算法
排序算法有很多,本例采用最基础的简单选择排序。
2 字符串比较函数
本题直接采用c语言提供的strcmp函数来实现两个字符串的比较,当然也可以自己写。比如这样
int strcmp(const char* s1, const char* s2) { while ( *s1 == *s2 && *s1 != '\0') { s1++; s2++; } return *s1 - *s2; }
3 c语言实现
#include <stdio.h> #include <string.h> int main() { //1. input int i, j,num; char str[1000][100],temp[100]; scanf("%d",&num); for (i = 0; i < num; i++) { //gets(str[i]); scanf("%s[^\n]",str[i]); } //2.sort for (i=0 ; i < num-1; ++i) { for (j = i+1; j < num ; ++j) { if (strcmp(str[i], str[j]) > 0) { strcpy(temp, str[i]); strcpy(str[i], str[j]); strcpy(str[j], temp); } } } //3.print //printf("***********************\n"); for (i = 0; i < num ; i++) { puts(str[i]); } return 0; }