题意:输入一些字符串,要求所需按键的次数最小
思路:先将所有字符串排序,然后再将前一个与后一个比较,找出要按键的次数,然后进行累加,刚开始WA是因为写成,计算两个字符串不同的字母,实际是要在出现第一个字符出现不同后,后面的字符全都要用按键输入了。
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define N 105
using namespace std;
char s[N][N], str[N][N], ans[N];
int cmp(const void *a, const void *b) {
return strcmp((char *)a, (char *)b);
}
int main() {
int cas;
scanf("%d", &cas);
while (cas--) {
int n, num = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%s", s[i]);
qsort(s, n, sizeof(s[0]), cmp);
num = strlen(s[0]);
int i, k;
for (i = 1; i < n; i++) {
for (k = 0; k < strlen(s[i]); k++) {
if (s[i][k] != s[i - 1][k])
break;
}
num += strlen(s[i]) - k;
}
printf("%d\n", num);
for (int i = 0; i < n; i++)
printf("%s\n", s[i]);
}
return 0;
}