直接上代码吧。轻喷。其实做这个主要还是方便我自己以后复习一下hhhh顺便方便一下其他人找到AC方法。感觉这道题考的还是比较基础的,无非就是字符串数组还有循环。
#include <stdio.h>//
//初始思路:①把每一个字符进行循环②和之后的字符进行计算能节约多少字符量
//改进思路:初始思路就是对的欸嘿嘿
#include <string.h>
char str[20][1000];
int main() {
int k;
scanf("%d", &k);
while (k--) {
int n;
scanf("%d", &n);
int i, j, k1, k2;
for (i = 0; i < n; i++) scanf("%s", str[i]);
int sum = 0, max = 0, num = 0;
//以上是初始化
for (i = 0; i < n - 1; i++) {//从第一个字符!开始遍历到倒数第二个字符
max = 0;
for (j = i + 1; j < n; j++) {//遍历第一个字符的相邻字符及其之后的字符,以此类推
num = 0;
k1 = strlen(str[i]) - 1;
k2 = strlen(str[j]) - 1;//遍历每一个字符的最后一个字符
while (k1 >= 0 && k2 >= 0) {
if (str[i][k1--] == str[j][k2--]) num++;//比对并且记录 !字符和当前比对字符的后缀重复量
else break;
}
if (max < num) max = num;
}
//以上是记录循环到的每一个字符能被节约的最大后缀量
sum += max;
}
printf("%d\n", sum);
}
return 0;
}
//以上是加和并且输出