课程满意度计算(Java)

题目描述

宇宙集团对QIT的课程做了一个满意度调查,一共在校园内抽取了N个同学,对本学期的M种课程进行满意度调查。宇宙集团的小Y想知道,有多少门课是被所有调查到的同学都喜欢的。

输入描述:

第一行输入两个整数N, M(1 <= N, M <= 1000) 接下来的N行里, 每行的开头有一个整数A(0 <= A <= M),表示这个同学喜欢的课程数量,接下来的A个元素表示他所喜欢的课程编号(1 <= 编号 <= M),每个元素之间以空格间隔。

输出描述:

输出一个整数表示答案。

示例1

输入

5 5

4 2 3 4 5

4 1 3 4 5

4 1 2 4 5

4 1 2 3 5

4 1 2 3 4

输出

0

说明

没有一门课被所有同学都喜欢。

示例2

输入

3 4

2 1 3

3 1 2 3

2 3 2

输出

1

说明

只有1门课被所有同学都喜欢。

思路

先创建整数N,M输出,以及一个数组arr.之后,对开头的整数A(同学喜欢的课程数量)进行判断,如果A==0,跳过;反之,往下依次执行每位同学喜欢的课程编号.这里,我们用数组序号代表同学喜欢的编号进行累加计算,若喜欢编号1一次,数组arr[1] ++ ,喜欢编号2一次,则数组arr[2] ++,所有同学循环下来,若课程被所有人同学喜欢,那么arr[课程编号]的值与同学数是相等的.最后,设置一个num,判断结果,循环判断每个数组的值是否等于同学数,若等于,则该课程被所有同学喜欢,num++.最后,循环结束,输出结果num.

代码

import java.util.Scanner ;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in) ;
        int N = sc.nextInt() ;  //同学数
        int M = sc.nextInt() ;  //课程数
        int [] a = new int [M + 10] ; //索引序号代表每门课程的编号
        for (int i = 0; i < N; i++) {   //输入、判断
            int A = sc.nextInt() ;  //该同学喜欢几门课程
            if(A == 0) {//如果他啥也不喜欢,跳过
                continue;
            }else{
                for (int j = 0; j < A ; j++) { //该同学喜欢哪些课程,统计一下
                    if(sc.hasNext()){ //输入多组数据
                    int c = sc.nextInt() ;
                    a[c] ++ ; //  喜欢哪号课程,相对应数组的索引就+1 ;
                    }
                }
            }
        }
        int num = 0 ;  //  计数用
        for (int i = 1; i <= M; i++) {
            if(a[i] == N) //该数组索引的值等于同学数,说明这门课程被所有同学喜欢
                num ++ ;
        }
        System.out.print(num) ;
    }
}
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值