输入描述:
每个案例第一行两个整数N,M,2 <= N ,M<= 200。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)
输出描述:
每个案例包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
while(in.hasNext())
{
int flag;
int N=in.nextInt();
int M=in.nextInt();
int[] num=new int[M];
int[] sum=new int[N];
for(int i=0;i<N;i++)
{
flag=in.nextInt();
sum[i]=flag;
num[flag]++;
}
for(int j=0;j<N;j++)
{
if(num[sum[j]]>1)
{
System.out.println(num[sum[j]]-1);
}
else
{
System.out.println("BeiJu");
}
}
}
}
}
思想:
建立num数组,长度为M:将所有的图书编号想象为编号0→M的桶
flag接收接下来输入的每一个图书编号:相应编号的旗子
num[flag]++:将旗子插进相同编号的桶里
建立sum数组,长度为N:将每一个flag值按输入顺序储存
→
num[sum[i]]即为编号为i的桶里插了多少只旗子