HNU JAVA 找朋友

【问题描述】

两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份湖大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。

首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。

【输入形式】

每个案例第一行两个整数N,M。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)

【输出形式】

每个案例包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)

【样例输入】

4 5

2

3

2

1

【样例输出】

1

BeiJu

1

BeiJu

总体思路:
这道题我的主要想法还是遍历吧,声明了两个数组Array和Array2,Array用于存储原始数据,Array2用于存储该读者存在几位潜在朋友。对Array进行双重遍历,若Array[i] = Array[j]则Array2[i]加一。

代码如下:

package week1.demo;

import java.util.Scanner;

public class Hwork5 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        int[] Array = new int[n];
        int[] Array2 = new int [n];//声明两个数组
        for(int i=0;i<n;i++){
            Array[i] = sc.nextInt();
        }
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(Array[i] == Array[j]) Array2[i]++;//若出现两个相等的书籍编号,则第i为读者的潜在朋友数加一。
            }
        }
        for(int i=0;i<n;i++){
            if(Array2[i] == 1) System.out.println("BeiJu");//因为遍历时将该读者自己也遍历进去了,因此每个人至少会有一位和自己喜欢的书籍编号相同的情况。于是Array2[i]=1时代表该读者的朋友只有他自己...输出BeiJu
            else System.out.println(Array2[i] - 1);//若存在朋友,则朋友数也要-1,即减掉自己作为自己的朋友
        }
    }
}
上一篇:Java数组09:稀疏数组


下一篇:逆向-攻防世界-Reversing-x64Elf-100