Board logo

标题: [文本处理] 批处理怎样取1~9中五个数组合和1~9中三个数组合的交集? [打印本页]

作者: lxyu521    时间: 2011-9-9 18:28     标题: 批处理怎样取1~9中五个数组合和1~9中三个数组合的交集?

本帖最后由 lxyu521 于 2011-9-14 10:45 编辑

求楼上的大侠们给个批处理,
1~9九个数字取五个进行组合,数字不重复,
1~9九个数字取三个进行组合,数字不重复,
求:最少要用多少组五个数的组合可包含下所有三个数字的组合?就是五个数字组合和三个数字组合的交集,,,

我的是意思是
比如0~9,这十个数,任取三个数为一组,都在012346   012359   012489   013789   026789   045678   123457   156789   234568   345679这十组数字之中,比如123就在012346中,,
像这样的,求1~9九个数,取五个为一组,,最少需要多少组才能包含下1~9任取三个数为一组的所有数组?
最少需要多少组,各组数字是什么?
作者: Batcher    时间: 2011-9-9 19:03

能否讲解一下五位数和三位数怎么可能存在共集?
作者: ArdentMan    时间: 2011-9-9 20:01

C(3,9)=9!/(3!*(9-3)!)=84组
作者: lxyu521    时间: 2011-9-9 21:55

我的是意思是
比如0~9,这十个数,任取三个数为一组,都在012346   012359   012489   013789   026789   045678   123457   156789   234568   345679这十组数字之中,比如123就在012346中,,
像这样的,求1~9九个数,取五个为一组,,最少需要多少组才能包含下1~9任取三个数为一组的所有数组?
最少需要多少组,各组数字是什么?
作者: lxyu521    时间: 2011-9-10 09:22

在线等结果
作者: lxyu521    时间: 2011-9-11 08:47

难道高人都过中秋去了吗?
作者: lxyu521    时间: 2011-9-13 16:33

节也过完了,还没人能解决吗?
作者: terse    时间: 2011-9-14 01:29

1~9九个数字取五个进行组合,数字不重复, 126组
1~9九个数字取三个进行组合,数字不重复, 84组

我算的是 112组
假设取123 在五组合中有15组包含123    126-15+1=112
  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1 1 9) do set _%%i=%%i
  3. set /a N=9,R=5,S=N-R,i=1,j=1
  4. for /l %%i in (1,1,%S%) do set /a "i*=(N-%%i+1),j*=%%i"
  5. set /a i/=j
  6. for /l %%i in (1 1 %R%) do set /a A%%i=%%i,B%%i=%%i+S&set #=!#! %%i
  7. echo!#!
  8. for /l %%a in (2 1 !I!) do (
  9.     set "#="
  10.     for /l %%i in (1 1 !R!) do if not #!A%%i! == #!B%%i! set M=%%i
  11.     for %%i in (!M!) do set L=!A%%i!
  12.         for /l %%j in (1 1 %R%) do (
  13.             if %%j geq !M! set/a A%%j=L+1,L=A%%j
  14.             set #=!#! !A%%j!
  15.         )
  16.     for %%i in (!#!) do set Emp=!Emp! !_%%i!
  17.     echo!Emp!&set "Emp="
  18. )
  19. echo 总 !i! 组
  20. pause
复制代码

作者: lxyu521    时间: 2011-9-14 10:39

不会吧,你的意思是说要112组五数组合才能包含下所有的三数组合??不应该这么多吧,
作者: weichenxiehou    时间: 2011-9-14 11:02

回复 9# lxyu521
楼主所说的是“组合”?我想应该是“排列”吧?组合是不管数字排列顺序的……如果真是组合,那用两个5位数足矣:01234和56789。如果是排列的话,所有的3位数排列有9×8×7=504种,而一个五位数排列可以容纳3个这样的三位数排列,比如12345就可以分解出123、234和345,那么就应该有504/3=168个这样的五位数排列。
作者: CrLf    时间: 2011-9-14 11:07

这个也太智能了...
作者: terse    时间: 2011-9-14 11:39

回复 9# lxyu521
意思有领会错是可能  你把代码里 R=5 改为R=3 即3组合
我再排除看下
作者: lxyu521    时间: 2011-9-14 13:54

回复 10# weichenxiehou


    五个数的是组合,三个数的是排列,,,就是用最少的五个数的组合包含下所有三个数的排列
作者: lxyu521    时间: 2011-9-14 13:56

回复 12# terse


    嗯,我知道求组合的方法,,只是求两个组合一个包含另一个就不行了,不知道如何算了
作者: terse    时间: 2011-9-14 15:15

明白了  估计要的是 旋转矩阵算法




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2