【发布时间】:2012-11-25 17:54:26
【问题描述】:
我必须编写一个 C 程序(用于我的离散数学作业),从集合 A (|A| = m) 到集合 B (|B|=n) 中查找到函数的数量并显示所有这些函数。我使用代码计算的 on 函数数:
for(k=0; k<n; k++)
x = x + pow( -1, k) * combination( n, n - k ) * pow( ( n - k ), m);
combination 是一个查找可能组合数的函数。
例如,如果 A = {1,2,3}, B={a,b,c},则从公式计算出的 on 函数数为 3^3 - 3(2^3) + 3 = 6。 一种可能的解决方案是 f = {(1,a),(2,b),(3,c)} [我知道这是一个解决方案]。
但我的问题是:如何显示每个解决方案!? 这只是一个简单的例子。但是如果 m 和 n 值增加(假设 m>=n),那么可能的函数数量会成倍增加! 例如,如果 m=7 和 n=4,则有 8400 个函数!
我想不出任何方法来显示 A 和 B 之间存在的每个函数。
【问题讨论】:
-
不太清楚你在问什么。也许举一个很小的例子,展示你想要做什么,然后从那里开始?
-
请记住,这里的人并不是都学过离散数学,甚至大多数人已经有一段时间了。您真的应该尝试用相当简单的术语来解释如何做事......
-
给定两个集合 A 和 B,我需要找到并显示从 A 到 B 的每个函数。让我举个例子:A={1,2,3} B={a,b} number到函数的数量是 2^3-2=6。我需要以有序对的形式显示从 A 到 B 可以存在的所有 6 个函数。 f1={(1,a),(2,b),(3,b)} f2={(1,b),(2,a),(3,b)} f3={(1,b) ,(2,b),(3,a)} 等等。我需要编写一个 C 代码来显示所有这些功能。
-
男人!除非集合很小,否则很快就会有很多功能。
-
如果 f(A) = B 则调用函数 f:A->B,即如果所有 bEB 至少有一个 f(a) = b 的 aEA
标签: c algorithm recursion discrete-mathematics