hdu2025 查找最大元素(C语言)
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)
下面的代码是我第一次用队列A题的代码,写完之后真的超级开心。
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<cctype>
#include<queue>
using namespace std;
const int maxn = 105;
int main() {
int n;
string s;
char k;
queue<char> q;
while (cin >> s) {
bool f[maxn] = { false };
n = s.size();
k = s[0];
for (int i = 1; i < n; i++) {
if (s[i] - k > 0) k = s[i];
}
for (int i = 0; i < n; i++) {
if (s[i] == k) f[i] = true;
}
for (int i = 0; i < n; i++) {
q.push(s[i]);
if (f[i]) {
q.push('(');
q.push('m');
q.push('a');
q.push('x');
q.push(')');
}
}
while(!q.empty()) {
char c = q.front();
q.pop();
printf("%c", c);
}
printf("\n");
}
}
后来我又去参考了一下别人的代码。发现别人写的更加简单,因此,我也把它复制过来了,但是我们两的思路是一样的。
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],max;
int i,s;
while(scanf("%s",&a)!=EOF)
{
max='a';
s=strlen(a);
for(i=0;i<s;i++)
{
if(a[i]>max)
max=a[i];
}
for(i=0;i<s;i++)
{
printf("%c",a[i]);
if(a[i]==max)
printf("(max)");
}
printf("\n");
}
return 0;
}