下面是我做的杭电的ACM程序第1004题,为什么交上去之后总是显示“wrong answer”?帮忙看看啊!

#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
int i,j,a,f=0,t=0,p,flag;
int e[1000]={0};
string c,d;
vector<string> b;
cin>>a;
while(a!=0)
{
p=1;
f=0;
t=0;
for(i=0;i<a;i++)
{
flag=0;
e[i]=0;
cin>>c;
if(i==0)
b.push_back(c);
else
{
for(j=0;j<p;j++)
if(c==b[j])
{e[j]++;
flag=1;}
if(flag==0)
{
b.push_back(c);
p++;

}
}
}
for(j=0;j<p+1;j++)
if(f<e[j])
{
f=e[j];
t=j;
}
cout<<b[t]<<endl;
b.clear();
cin>>a;
}
return 0;
}

你的代码有很多地方是没必要的,可以改
比如:在if(c==b[j]){e[j]++; flag=1;} 里面可以加break;
还有连续输入为什么不写成
while(cin >> a){ if(a==0) break; ....... } 不会觉得这样直观很多吗?当然这是个人习惯问题,这是题外话,见谅
你这个过不了这个数据(暂时发现的):
先输入
3
a
w
w
紧接着输入:
1
a
会报错
下面是我 根据你的思路, 改良过的, 能AC
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a;
string str, all[1000];
while(cin >> a){
if( a == 0) break;
int i, sum[1000], num = 0, ans;
memset(sum, 0, sizeof(int)*1000);
cin >> all[0]; //第一次不管输入什么, 都会被保存的
num++; // 不同颜色的总数 变成1
sum[0] = 1;
ans = 0; //初始化答案的下标是第一个
for(i = 1; i < a; ++i){
cin >> str;
int j;
for(j = 0; j < num; ++j){
if(str == all[j]){
break;
}
}
if(j < num){
sum[j]++;
if(sum[j] > sum[ans]) ans = j;
}
else{
all[ num ] = str;
sum[ num ] = 1;
num++;
}
}
cout << all[ans] << endl;
}
return 0;
}追问

嘿嘿,谢谢了,我知道我在哪出错了,最后判断应该是小于p,而不是p+1,刚改了,交上去通过了,哈哈,不过还是谢谢啊!

追答

嗯...你可以结案了

温馨提示:内容为网友见解,仅供参考
无其他回答

杭电acm1002,一直都是Wrong Answer,求解
atoi()是把字符数组变成整数,如果&tmp之后的字符不是'\\0'反而是数字,那么就会错误的

求大神指点,杭电acm1004为什么我的结果是Wrong Answer!
include <stdio.h>#include <string.h>#define MAX 1000typedef struct balloons {char color[16];int count;}balloons;int main(int argc, char *argv[]) {int T,n,m,i,j,flag;balloons a[MAX] = {"",0};char blln[16];scanf("%d",&T);while(T--) {m = 0;scanf("%d",&n...

杭电acm1002,一直wrong answer,怎么改啊~我的测试结果都是正确的
虽然很想说赞 但是这种是JAVA大数暴力 给没学的人AC了也没意义 有时候样例都是浮云,要逻辑周全才能AC 需要自己DEGUB才能提高 给你C ++数组模拟的代码之前说下 ---输入输出不相影响,可以边输入变输出,循环时需要的话就初始化就好了 这样会减少好多代码 有利于找错误 int a[max],b[ma...

杭电oj 1004题在vc6上运行正确但总是wrong answer
统计个数问题:include<iostream> include<cstdlib> include<cstring> using namespace std;struct node { int count;char color[15];}*c;int main(){ int n,i,j,max=1;char pop[15];while(cin>>n,n){ c=(struct node*)malloc(sizeof(c[0])*n);cin>>c[0].color;c[0].count=1;...

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

杭电ACM水题,测试数据没错,提交一直提示wrong answer
scanf("%s",data[i].number);scanf("%d",&data[i].m);这两行中间插入一行 getchar();

关于杭电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;...

...我自己运行起来都是对的。。。为什么交上去就是WRONG ANSWER...
还有一点我想说,你的代码有点杂乱,我指的是功能性不那么一目了然,建议功能性函数独立在main外面,我使用C++,大同小异,代码如下:include<iostream> using namespace std;int a[101];int b[101];int fun1(int n)\/\/每层时间 { if(n>=0){ return 6*n+5;} if(n<0){ return -(4*...

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

...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[...

相似回答