XTU OJ 1043

直接上代码吧。轻喷。其实做这个主要还是方便我自己以后复习一下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;
}
//以上是加和并且输出 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值