HDOJ-1004 统计颜色数量最多的气球(含完整C和Java代码)

题目如下图:
HDOJ-1004 统计颜色数量最多的气球(含完整C和Java代码)
很容易能看懂的是:

  • 输入时首先需要输入气球的数量n
  • 然后,给出对应的n个颜色
  • 输出颜色数量最多的气球颜色
  • 要求实现可以在给出结果后自动进入下一次输入
  • 以0结束程序

C语言代码如下:

#include<stdio.h> // 题目涉及到输入输出 
#include<string.h> // 题目涉及到字符串处理 
#define N 1001 //题目中说了哈,最多1000个气球,这里给到1001个,贼安全 
#define COLOR_NAME_LENGTH 20 // 颜色的英文不会超过20个字母吧,我猜的… 
int main(){
	//初始化变量和数组 
	char color[N][COLOR_NAME_LENGTH];
	int n,i,j,count[N],max,k;
	//确定条件,根据题意,循环碰到0break,不然就继续自动要求输入 
	while((scanf("%d",&n))&&n!=0){
		//输入n之后,给出n个气球分别的颜色 
		for(i=0;i<n;i++){
			scanf("%s",&color[i]);
		}
		//每个气球的数量先统一给到0个 
		for(i=0;i<n;i++){
			count[i]=0;
		}
		//通过最简单的两两比较,为color数组的count计数 
		for(i=0;i<n;i++){
			for(j=0;j<n;j++){
				if(strcmp(color[i],color[j])==0){
					count[i]+=1;
				}
			}
		}
		//经典找最大值的方法 
		max = 0;
		k = 0;
		for(i=0;i<n;i++){
			if(count[i]>max){
				max = count[i];
				k=i;
			}	
		}
		printf("%s\n",color[k]); 
	}
	return 0;
} 

Java代码如下:

import java.util.*;
public class HDOJ1004ANSWER{
    public static void main(String[] args) {
        @SuppressWarnings("resource")
		Scanner cin = new Scanner(System.in);
        while(cin.hasNextInt())
        {    
            int num  = cin.nextInt();
            //输入0结束测试
            if(num<=0)
                break;
            //输入测试数据
            List<Item> items = new ArrayList<Item>();
            for(int i = 0;i<num;i++){
                String item = cin.next();
                boolean flag = false;

                for(int j = 0;j<items.size();j++){
                    //当前集合中包含输入的气球
                    if(items.get(j).str.equals(item)){
                        items.get(j).count+=1;
                        flag = true;
                        break;
                    }
                }
                //当前集合中不包含输入的气球
                if(!flag){
                    items.add(new Item(item,1));
                }
            }
            //找出最多气球的气球个数
            int max = items.get(0).count;
            for(int i = 1;i<items.size();i++){
                if(items.get(i).count>max){
                    max = items.get(i).count;
                }
            }
            //输出所有的最多的气球
            for(int i = 0;i<items.size();i++){
                if(items.get(i).count == max){
                    System.out.println(items.get(i).str);
                }

            }
        }

    }
}
class Item{
    public String str;
    public int count;
    public Item(String s,int c){
        str = s;
        count= c;
    }
}