| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1315 人关注过本帖
标题:问题:比较集合的大小
取消只看楼主 加入收藏
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
收藏
 问题点数:0 回复次数:2 
问题:比较集合的大小
给定两个集合 A、B,集合内的任一元素 x满足 1 ≤ x ≤ 109,并且每个集合的元素个数不大
于 105。我们希望求出 A、B之间的关系。
任 务 :给定两个集合的描述,判断它们满足下列关系的哪一种:
A是 B的一个真子集,输出 “A is a proper subset of B”
B是 A的一个真子集,输出 “B is a proper subset of A”
A和 B是同一个集合,输出 “A equals B”
A和 B的交集为空,输出 “A and B are disjoint”
上述情况都不是,输出“I'm confused!”


Input

输入有两行,分别表示两个集合,每行的第一个整数为这个集合的元素个数(至少一个),
然后紧跟着这个集合的元素(均为不同的正整数)

Output

输出只有一行,就是 A、B的关系。

Sample Input

2 55 27
2 55 27

3 9 24 19
2 9 24

3 1 2 3
4 1 2 3 4

3 1 2 3
3 4 5 6

2 1 2
2 2 3

Sample Output

A equals B
B is a proper subset of A
A is a proper subset of B
A and B are disjoint
I'm confused!问题

[[it] 本帖最后由 心剑菩提 于 2008-3-7 16:58 编辑 [/it]]
搜索更多相关主题的帖子: 子集 subset proper 输出 元素 
2008-03-06 14:39
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
收藏
得分:0 
#include <stdio.h>
int main()
{
   int i,j,k,m,n,a[150],b[150];
   while(scanf("%d",&m)!=EOF)
   {
     for(i=0;i<m;i++)  scanf("%d",&a[i]);
     scanf("%d",&n);
     for(i=0;i<n;i++)  scanf("%d",&b[i]);
     k=0;
     if(m<n)
     { for(i=0;i<m;i++)
           for(j=0;j<n;j++)
           {    if(a[i]==b[j]){k++;break;}    }
       if(k==m)
           printf("A is a proper subset of B\n");
       else if(k==0)
           printf("A and B are disjoint\n");
       else
           printf("I'm confused!\n");
    }
    if(m==n)
    {  for(i=0;i<m;i++)
           for(j=0;j<n;j++)
           {    if(a[i]==b[j]){k++;break;}    }
       if(k==m)
               printf("A equals B\n");
       else if(k==0)
               printf("A and B are disjoint\n");
       else
               printf("I'm confused!\n");
    }
    if(m>n)
    {  for(i=0;i<n;i++)
           for(j=0;j<m;j++)
           {    if(b[i]==a[j]){k++;break;}    }
       if(k==n)
           printf("B is a proper subset of A\n");
       else if(k==0)
           printf("A and B are disjoint\n");
       else
           printf("I'm confused!\n");
    }
   }
   return 0;
}

前世五百次的回眸 才换来今生的擦肩而过
2008-03-10 22:48
心剑菩提
Rank: 1
等 级:新手上路
帖 子:249
专家分:0
注 册:2007-5-17
收藏
得分:0 
#include <stdio.h>
int main()
{
   int i,j,k,m,n,a[150],b[150];
   while(scanf("%d",&m)!=EOF)
   {
     for(i=0;i<m;i++)  scanf("%d",&a[i]);
     scanf("%d",&n);
     for(i=0;i<n;i++)  scanf("%d",&b[i]);
     k=0;
     if(m<n)
     { for(i=0;i<m;i++)
           for(j=0;j<n;j++)
           {    if(a[i]==b[j]){k++;break;}    }
       if(k==m)
           printf("A is a proper subset of B\n");
       else if(k==0)
           printf("A and B are disjoint\n");
       else
           printf("I'm confused!\n");
    }
    if(m==n)
    {  for(i=0;i<m;i++)
           for(j=0;j<n;j++)
           {    if(a[i]==b[j]){k++;break;}    }
       if(k==m)
               printf("A equals B\n");
       else if(k==0)
               printf("A and B are disjoint\n");
       else
               printf("I'm confused!\n");
    }
    if(m>n)
    {  for(i=0;i<n;i++)
           for(j=0;j<m;j++)
           {    if(b[i]==a[j]){k++;break;}    }
       if(k==n)
           printf("B is a proper subset of A\n");
       else if(k==0)
           printf("A and B are disjoint\n");
       else
           printf("I'm confused!\n");
    }
   }
   return 0;
}

前世五百次的回眸 才换来今生的擦肩而过
2008-03-10 22:48
快速回复:问题:比较集合的大小
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024073 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved