数学组合问题 10

求数学算法,列出所有组,和组中的所有元素1~10个元素,进行两两组合,并且分组,每组包含1~10的所有元素,组内不能出现重复元素,组之间不能出现重复组合,例如{1,10}... 求数学算法,列出所有组,和组中的所有元素
1~10个元素,进行两两组合,并且分组,每组包含1~10的所有元素,组内不能出现重复元素,组之间不能出现重复组合,例如{1,10}和{10,1}算相同组合
展开
 我来答
华泰石墨粉Lie5
2016-07-01 · TA获得超过3.2万个赞
知道大有可为答主
回答量:6899
采纳率:90%
帮助的人:2529万
展开全部
1~10是所有分组及所有元素:
{1,2}、{1,3}、{1,4}、{1,5}、{1,6}、{1,7}、{1,8}、{1,9}、{1,10},
{2,3}、{2,4}、{2,5}、{2,6}、{2,7}、{2,8}、{2,9}、{2,10},
{3,4}、{3,5}、{3,6}、{3,7}、{3,8}、{3,9}、{3,10},
{4,5}、{4,6}、{4,7}、{4,8}、{4,9}、{4,10},
{5,6}、{5,7}、{5,8}、{5,9}、{5,10},
{6,7}、{6,8}、{6,9}、{6,10},
{7,8}、{7,9}、{7,10},
{8,9}、{8,10},
{9,10}。
如有帮助,希望采纳,万分感谢。
追问
有什么算法或者规律吗,我想要的结果是最后分组
supersarah
2016-07-01 · TA获得超过7151个赞
知道大有可为答主
回答量:2623
采纳率:80%
帮助的人:1216万
展开全部
"每组包含1~10的所有元素", 这个说法有问题吧.... 按这个说法应该是只有一个: { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
应该换成 "每组包含 1~10 的若干个元素" 吧....

我们考虑一个10位的二进制数 (b9 b8 b7 b6 b5 b4 b3 b2 b1 b0)2, 它从 (0000000000)2 开始, 每次递增 1, 最后到 (1111111111)2, 这样共经历过 1024 种状态, 它的每个二进制位分别代表 1~10号元素是否在组合内. 比如 (1110001011)2 表示, { 10, 9, 8, 4, 2, 1 } 的组合

显然, 该二进制数的状态一一对应题目所述的组合, 因此共有 1024 种 (包括空组合).....

以 c 语言为例:
int array [1024][10];
int i, j, k;
for ( i = 0; i < 1024; i ++ )
for ( j = k = 0, m = 1; j < 10; j++, m<<=1 )
if ( i & m ) array [ i ][k++] = j;

这样就穷举了 1024 种组合

如果是每个组合, 必须是有两个元素, 那就简单了, 从 1 开始, 遍历第一个元素, 然后从 它后面的元素开始, 遍历其余元素
int array [45][2];
int i, j, k;
for ( k = i = 0; i < 9; i ++ )
for (j = i+1; j < 0; j ++ )
{ array [ k ][ 0 ] = i; array [k++][ 1 ] = j; }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式