谁是你的潜在朋友(枚举 C++)

谁是你的潜在朋友
总时间限制: 1000ms 内存限制: 65536kB
描述
“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。
首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。
输入
第一行两个整数N,M,2 <= N ,M<= 200。接下来有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

思路点拔:本题没什么高深的算法,就是一个简单的枚举,就是枚举除了自己外有谁喜欢的书的编号是想等的,就是一个潜在朋友,就累加一个,但是循环的时候要注意:在判断是否喜欢的书的编号是相等的的时候,我们就不能让自己和自己比,不然就没有悲剧的情况了,好了,这么简单的一个问题,我就不多说了,我觉得可以上代码了

#include<cstdio>
const int MAXN=2005;
int a[MAXN],sum[MAXN]; //sum用来记录第i个人有几个潜在朋友
int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++) //输入
    {
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++) //用双重循环寻找潜在朋友
    {
        for(int j=1;j<=n;j++)
        {
            if(a[i]==a[j]&&i!=j) 
            //如果找到了和自己喜欢的书的号码相同,而且这个人不是自己
            {
                sum[i]++; //潜在朋友的数量就加一
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        if(sum[i]) //如果有潜在朋友,就输出朋友的数量
            printf("%d\n",sum[i]);
        else//否则就说明没有潜在朋友,就输出BeiJu
            printf("BeiJu\n");
    }
    return 0;
}
展开阅读全文

没有更多推荐了,返回首页