杭电ACM 2025问下 我写的哪里错了,老是wronganswer

自己用编译器运行结果都是对的啊。。。
#include <stdio.h>
#include <string.h>
int main()
{
char a[601];
int n=0,j=0,b[101];
while(scanf("%s",a)!=EOF)
{
n=strlen(a);
int h=0;
char max;
max=a[0];
for(int i=0;i<=n-1;i++)
if(a[i]>max)
max=a[i];
for(int i=0;i<=n-1;i++)
{
if(a[i]==max)
{
b[j]=i;
j++;
}
}
for(int k=0;k<=j-1;k++)
{
int count=0;
count=b[k]+1+5*h;
for(int i=(strlen(a)-1);i>=count;i--)
a[i+5]=a[i];
a[count]='(';
a[count+1]='m';
a[count+2]='a';
a[count+3]='x';
a[count+4]=')';
h++;
}
for(int i=0;i<strlen(a);i++)
printf("%c",a[i]);
printf("\n");
for(int i=0;i<=600;i++)
a[i]=0;
for(int i=0;i<=100;i++)
b[i]=0;
n=j=0;
}

return 0;
}

你好,你的程序代码我也看过了,其实只需要找到最大的那个字母然后每次出现这个字母都输出一次“(max)”就OK了,没有必要修改字符串在内存中的内容。
你的方法并不是不可以,只是没有必要那么麻烦而已!~~~
这个题也比较简单,我只是给你测试了一下,当测例是abckdljgla时你的答案是abckdl(max)jgl(max)aA,显然错了,我也没有继续找错。其实改一下方法更好,你应该也会认同这一点的,是吧,呵呵呵。
写程序必然会有这个阶段,有错误的时候最好是自己找出来纠正,这样对自己的提升最大。有错误的时候继续测试,希望你能够拿下这个题。

我也写了一下这个题,AC了,你可以参考一下。
#include <iostream>
#include <cstring>

using namespace std;

int main()
{
char str[101];
while(cin >> str)
{
int n = strlen(str);
int i;
char max = str[0];
for(i = 1; i < n; i++)
{
if(max < str[i])
{
max = str[i];
}
}
for(i = 0; i < n; i++)
{
cout << str[i];
if(str[i] == max)
{
cout <<"(max)";
}
}
cout << endl;
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-24
同学,写这么复杂干嘛啊!先理一下思路:1.按字符串方式读入一行。2.遍历数组,找出最大值。3.输出按一个字符一个字符输出,输出前判断一下值是不是最大的,是的话输出字母在多加一个(max)。参考代码如下:

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

int main()
{
char D[101];
while(scanf("%s",D)!=EOF)
{
int i,len=strlen(D);
char max;
max=D[0];
for(i=0;i<len;i++)
if(max<D[i]) max=D[i];

for(i=0;i<len;i++)
{
if(D[i]==max)
printf("%c(max)",D[i]);
else
printf("%c",D[i]);
}
printf("\n");
}
return 0;
}本回答被提问者采纳

杭电ACM 2025问下 我写的哪里错了,老是wronganswer
这个题也比较简单,我只是给你测试了一下,当测例是abckdljgla时你的答案是abckdl(max)jgl(max)aA,显然错了,我也没有继续找错。其实改一下方法更好,你应该也会认同这一点的,是吧,呵呵呵。写程序必然会有这个阶段,有错误的时候最好是自己找出来纠正,这样对自己的提升最大。有错误的时候继...

杭电acm 2025 求帮助!!!wronganswer!!!
你程序的问题在于没有对max初始化 所以对"aaaa"这样的输入就会出错。解决办法:maxc=str[0];的下一行加上max=0;

哪位高手能告诉我为什么我的杭电2054为什么显示wronganswer啊???
这一题看是很简单,其实是你把它想简单了。问题在于:这两个数不在int 范围内啊。题目也没有告诉你数据范围,而你把它当成了int 处理了。因此你只要把那两个数用字符串存储起来,然后再比较大小就行了。字符串的大小嘛,开大点就好了。

麻烦大神帮我看一下杭电acm2034为什么总是Wrong Answer?
麻烦大神帮我看一下杭电acm2034为什么总是Wrong Answer? \/*ProblemDescription参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法... \/* Problem Description 参加过上个月月赛的同学一定还记得其中的...

杭电ACM Elevator 为什么是Wrong Answer……
将 else if(integer[j]<stop)这句改为 else 即可 如果用楼主这种条件判断的话,会忽略连续输入两个相等数的情况。

杭电OJ题目2034,我的答案正确却总是wrong answer
再就是定义的数组范围,也是一个容易出错的,这些是我做题发现的一些,一般提交错误,大多数情况还是算法的问题,因为在检查你的程序的时候,是很多数据,而且边界条件也要满足,自己多测试下,看看算法对不对,自己喜欢它,就坚持下去。杭电的输入要判断文件结束.详见杭电acm主页第一栏F.A.Q P.S.新用...

麻烦看下杭电 2016,我那边写错了,一直是wrong answer
这个是题目描述问题,如果有多个都是最小值的话,取最后一个。if(a[i]<=min)

杭电2028 总是wrong answer
您这算法也太拽了吧!必然超时。至于出现WA,考虑到原题“假设最后的输出是一个32位的整数”,这就暗示如果你全乘起来得到max这一步会出现整数溢出。借鉴两个数的LCD辗转相除法,一种思路是每两个一组逐个求。参见http:\/\/wenku.baidu.com\/view\/49615ae8f8c75fbfc77db286.html ...

关于杭电acm 为什么提交上去老提示 wrong answer 求高手解答
int main(){ int a[100005],sum[100005];int n,i=1,num,j,begin=1,end=1,max,temp;scanf("%d",&n);for(int i=1;i<=n;i++){ scanf("%d",&num);for(j=1;j<=num;j++){ scanf("%d",&a[j]);} max=sum[1]=a[1];temp = 1;begin = end = 1;for(j=2;j<=num;...

...in the Middle的解答,提交时总是“wrong answer",请问是哪里...
是快排的问题。如下修改就AC了 include<stdio.h> include <iostream> include <algorithm> include<malloc.h> using namespace std;\/ int Partiton(int *a,int low,int high){ int key=a[low];if(low<high){ while(low<high && a[high]>=key){ --high;} if(low<high){ a[low]=a[...

相似回答
大家正在搜