离散数学必过实践题,C++代码,不是很懂,有没有大神帮忙解答一下

集合A(1≤∣A∣≤100)上不同的等价关系┅共多少个

一行,一个整数n(1≤n≤100)表示集合A的元素个数。

集合A上不同等价关系的个数模109+7即输出其个数模。(因为当∣A∣比较大时A上的等价关系数是个巨大的数字,比如∣A∣=100时其上等价关系的个数是个116位的数字。)

首先说说什么是等价关系如果关系R是集合A上的關系,并且关系R满足自反对称,传递那么关系R就是A上的等价关系。
然后再说说什么是等价类如果[x]R={y|y∈A

那么这个等价类和等价关系有什麼关系呢,听着有点拗口嗷

举的例子可能不够好,我是想说明有的[x]可能是相等的集合,也就是说等价关系的个数就小于等于集合元素嘚个数多个等价类是一个集合能想到什么呢?像是编号的小球放在不编号的盒子里并且盒子不空呢这样一说是不是有那么一点点模糊嘚思路啦。

那么我们来想一下都有哪几种可能性呢。

那么分析一下小球放在盒子里有什么规律吧如果只有一个盒子的话,只可能有一種放法;如果盒子和小球的个数相等那也是只有一种放法;如果小球数量比盒子还少呢,那就没有意义了对吧

给一系列整数输入作为集合A的元素再给若干个整数x,问是否有x∈A

第一行是一个整数N(1≤N≤10?5),接下来一行有N个整数(范围[?10?5?,10?5??]空格分开),表示集合A中的元素;

第三行是一个整数M(1≤M≤10?4?)接下来一行有M个整数(范围[?105,105],空格分开)表示要查询的元素x。

M行若x∈A,输出Yes;若x?A输出No。

其實只是单纯的判断元素是不是在集合里面那么用纯C的话,写一个排序和二分查找应该也能过暴力遍历也能过一些吧
那么还是用实现好嘚set
C++的set有个find方法,如果找到就返回该值的迭代器(类似于指针)如果没有就返回end()
python直接用in关键字就行了

我要回帖

更多关于 离散数学必过 的文章

 

随机推荐