HDU2025 查找最大元素【入门】

查找最大元素

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 63900    Accepted Submission(s): 34037

Problem Description

对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。

Input

输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。

Output

对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。

Sample Input

 
 
abcdefgfedcba xxxxx

Sample Output

 
 
abcdefg(max)fedcba x(max)x(max)x(max)x(max)x(max)

Author

lcy

Source

问题链接HDU2025 查找最大元素

问题简述:参见上文。

问题分析

  这个问题的关键是开始不知道字符串中的哪个字符最大,所以需要先看一遍字符串。知道最大字符之后,对字符串再过一遍即可,该插入字符串“(max)”的地方,插入即可。实在想不出有更好的算法,也许这就是最好的算法。

程序说明

  对于这个题,不用指针来做,就不够专业。用字符数组和字符串函数来做,只能算入门级别的做法。

  做这个程序几次AC没过,问题出在没有每次都把变量max初始化上,好在有高人指点。看似简单的问题,吃亏往往在细节上。

  这里给出了两种实现方法,一是使用指针,二是使用数组。

AC的C语言程序如下(数组):

 

/* HDU2025 查找最大元素 */

#include <stdio.h>

#define N 100
char s[N +1];

int main(void)
{
    char max;
    int i;

    while(scanf("%s", s) != EOF) {
        max = '\0';

        // 查找最大字符
        for(i=0; s[i]; i++)
            if(s[i] > max)
                max = s[i];

        // 输出
        for(i=0; s[i]; i++) {
            printf("%c", s[i]);
            if(s[i] == max)       // 最大字符则插入(max)
                printf("(max)");
        }
        printf("\n");
    }

    return 0;
}

AC的C语言程序如下(指针):

/* HDU2025 查找最大元素 */

#include <stdio.h>

int main(void)
{
    char s[100+1], max, *t;

    while(scanf("%s", s) != EOF) {
        max='\0';

        // 查找最大字符
        t = s;
        while(*t) {
            if(*t > max)
                max = *t;
            t++;
        }

        // 输出
        t = s;
        while(*t) {
            printf("%c", *t);
            if(*t == max)       // 最大字符则插入(max)
                printf("(max)");
            t++;
        }
        printf("\n");
    }

    return 0;
}

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值