1004题其实很简单,就是要你统计最多气球的个数,但是在输出的时候却需要认真仔细,符合题目要求。
在输出是首先注意的是输出顺序:如果有多个数量相同的颜色,先输入的先输出,如,
red
green
red
green
这种情况需要输出
red
green
贴出AC代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ int n = 1; int i = 0; int max = 0; int maxindex = 0; int j = 0; char color[1000][16]; int *cnum; while(n){ scanf("%d",&n); cnum = (int *)malloc(sizeof(int) * n); for(i = 0;i < n;i ++) { scanf("%s",&color[i]); } for(i = n - 1;i >= 0;i --) { cnum[i] = 1; if(i != n - 1){ for(j = n - 1;j > i;j -- ) if(strcmp(color[i],color[j]) == 0){ cnum[i] ++; } } } max = cnum[0]; maxindex = 0; for(i = 0;i < n;i ++){ if(max < cnum[i]){ max = cnum[i]; maxindex = i; } } for(i = 0;i < n;i ++) if(max == cnum[i]){ printf("%s ",color[i]); } } return 0; }
2016.11.28更新===============================================
#include<stdio.h> #include<string.h> int main(){ int n; scanf("%d",&n); while(n != 0){ char color[1000][15]; int count[1000] = {0}; int currentColor = 0;//有多少种颜色 int i = 0; //开始输入 for(i; i < n; ++i){ char s[15]; int haveSameColor = 0; int j = 0; scanf("%s",&s); for(j ; j < currentColor; ++j){ if(!strcmp(s,color[j])){ count[j] ++; haveSameColor = 1; break; } } if(!haveSameColor) { strcpy(color[currentColor++],s); } } int maxIndex = 0; int max = count[0]; for(i = 1;i < currentColor;++ i){ if(count[i] > max){ max = count[i]; maxIndex = i; } } printf("%s ",color[maxIndex]); scanf("%d",&n); } return 0; }
注意:bool型有的时候会出现一些错误,所以这里使用整形来代替
THISSKY出品,原文链接:http://www.cnblogs.com/zhuhongjongy/p/4959522.html