杭电1004,Let the Balloon Rise 很郁闷,不知道错在哪儿
最近才开始搞ACM,下面是我的代码,真不知哪儿错了,老是WA。请高手帮忙看看,感激不尽!#include<stdio.h>#include<string.h>intmai...
最近才开始搞ACM,下面是我的代码,真不知哪儿错了,老是 WA。请高手帮忙看看,感激不尽!
#include<stdio.h>
#include<string.h>
int main(void)
{
int n,i,j,max,sum;
char clr[1005][20],str[20];
while(scanf("%d",&n)&&n){
for(i=0; i<n; i++)
scanf("%s",clr[i]);
max = -1;
for(i=0; i<n && clr[i][0]!='\0'; i++){
sum = 1;
for(j=i+1; j<n && clr[j][0]!='\0'; j++){
if(!strcmp(clr[i],clr[j])){
sum++;
clr[j][0] = '\0';
}
}
if(sum > max){
max = sum;
strcpy(str,clr[i]);
}
}
printf("%s\n",str);
}
return 0;
} 展开
#include<stdio.h>
#include<string.h>
int main(void)
{
int n,i,j,max,sum;
char clr[1005][20],str[20];
while(scanf("%d",&n)&&n){
for(i=0; i<n; i++)
scanf("%s",clr[i]);
max = -1;
for(i=0; i<n && clr[i][0]!='\0'; i++){
sum = 1;
for(j=i+1; j<n && clr[j][0]!='\0'; j++){
if(!strcmp(clr[i],clr[j])){
sum++;
clr[j][0] = '\0';
}
}
if(sum > max){
max = sum;
strcpy(str,clr[i]);
}
}
printf("%s\n",str);
}
return 0;
} 展开
展开全部
你的主要问题是 clr[j][0] = '\0';
比如说,你输入:
5
blue
blue
red
red
red
第二个颜色即blue会因为clr[j][0] = '\0'语句而变成了'\0',又因为for(i=0; i<n && clr[i][0]!='\0'; i++)
语句,i=1时立即停止运行。结果是blue,但正确的结果应该是red.
#include<stdio.h>
#include<string.h>
int main(void)
{
int n,i,j,max,sum;
char clr[1005][20],str[20];
while(scanf("%d",&n)&&n){
for(i=0; i<n; i++)
scanf("%s",clr[i]);
max = -1;
for(i=0; i<n ; i++){ /*删掉&& clr[i][0]!='\0'*/
sum = 1;
for(j=i+1; j<n ; j++){ /*删掉&& clr[j][0]!='\0'*/
if(!strcmp(clr[i],clr[j])){
sum++;
/*clr[j][0] = '\0';*/ /*删掉此行*/
}
}
if(sum > max){
max = sum;
strcpy(str,clr[i]);
}
}
printf("%s\n",str);
}
return 0;
}
比如说,你输入:
5
blue
blue
red
red
red
第二个颜色即blue会因为clr[j][0] = '\0'语句而变成了'\0',又因为for(i=0; i<n && clr[i][0]!='\0'; i++)
语句,i=1时立即停止运行。结果是blue,但正确的结果应该是red.
#include<stdio.h>
#include<string.h>
int main(void)
{
int n,i,j,max,sum;
char clr[1005][20],str[20];
while(scanf("%d",&n)&&n){
for(i=0; i<n; i++)
scanf("%s",clr[i]);
max = -1;
for(i=0; i<n ; i++){ /*删掉&& clr[i][0]!='\0'*/
sum = 1;
for(j=i+1; j<n ; j++){ /*删掉&& clr[j][0]!='\0'*/
if(!strcmp(clr[i],clr[j])){
sum++;
/*clr[j][0] = '\0';*/ /*删掉此行*/
}
}
if(sum > max){
max = sum;
strcpy(str,clr[i]);
}
}
printf("%s\n",str);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询