HDU 1004
题目:输入包含多个测试用例。每个测试用例都以数字n (0 < n <= 1000)开始,即分发的气球总数。接下来的n行各包含一种颜色。气球的颜色由最多15个小写字母组成。n = 0的测试用例终止输入。
(有参考大佬的代码)
C语言
#include<stdio.h>
void select(int n);
int main(void){
int n;
scanf("%d",&n);
select(n);
return 0;
}
void select(int n){
int ball[1000][20]; //存放每个气球的个数
int num[1000]={0}; //存放最大气球数目
int i,j,k;
int max=0; //最大的气球数
for(i=0;i<1000;i++) //清空计数器数组的值
{
num[i]=0;
}
for(i=0;i<n;i++){
scanf("%s",ball[i]);
for(j=0;j<i;j++){
for(k=0;ball[i][k]!='\0'&&ball[j][k]!='\0';k++){
if(ball[j][k]==ball[i][k]){}
else{
break;
}
}
if(ball[i][k]=='\0'&&ball[j][k]=='\0'){
num[j]++;
break;
}
}
if(j==i){
num[i]++;
}
}
for(i=0;i<n;i++){
if(num[max]>num[i]){
max=i;
}
}
printf("%s\n",ball[max]);
}
java
package HDU1004;
import java.util.Arrays;
import java.util.Scanner;
public class hud1004 {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入气球个数:");
int n=sc.nextInt();
int max=0;
String maxball="";
String []ball=new String[n];
for(int i=0;i<n;i++) {
ball[i]=sc.next();
}
Arrays.sort(ball);
for(int i=0;i<n;i++) {
System.out.println(ball[i]);
}
int temp=0;
if(n==1) {
System.out.println(ball[0]);
}
else {
for(int i=0;i<n-1;i++) {
if(ball[i + 1].equals(ball[i])) { //equal比较对象的内容,==比较对象的地址
temp++;
if(temp>max) {
max=temp;
maxball=ball[i];
}
}else {
temp=0;//清零
}
}
System.out.println(maxball);
}
}
}
字符串是对象类型,所以不能用简单的判断
equals()比较的是对象的内容(区分字母的大小写格式)是否相等
“”比较两个对象时,比较的是两个对象的内存地址,所以不相等