排列组合
文章平均质量分 87
northwolves
MS-VB-MVP
MS-EXCEL-MVP
展开
-
如何计算数据组合在全排序组合中的行值
VBA计算数据组合在全排序组合中的行值原创 2010-07-06 21:12:00 · 3081 阅读 · 2 评论 -
Nine-digit Fractions(II)
Problem: Suppose integer A,B(A>B) and single C were satisified A/B=C and all digits(1-9) each used just once in the both sides of the equality respectively. Try to get all solutions. Answer:原创 2009-02-11 01:16:00 · 1938 阅读 · 0 评论 -
猴子选大王的四种VB解法
题目:一堆猴子编号依次是1,2,3 ...n ,这群猴子(n个)按照1到n的顺序围坐一圈,从第1开始报数,报双数的猴子离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。 解法: 1.集合的方法(O(2N)): Function Monkeyking(ByVal n As Long) As LongDim all As New Collection,原创 2009-02-10 15:30:00 · 2340 阅读 · 5 评论 -
Multi select elements which sums upto a certain number from an array(II)
Give an array and a certain number,how to select some of the elements to sums upto the number? (Also see http://blog.csdn.net/northwolves/archive/2008/11/25/3372338.aspx)The following codes can brin原创 2009-02-03 20:49:00 · 1455 阅读 · 0 评论 -
一个九位数由1-9数字组成并前N 位被N整除
题目:请将123456789九个数字以特定的顺序排列,组成一个9位数ABCDEFGHI(每个数字只能使用一次),使得:1.第一位数字组成的整数可以被1整除2.第一、二位数字组成的整数可以被2整除3.第一、二、三位数字组成的整数可以被3整除4.第一、二、三、四位数字组成的整数可以被4整除......9.第一、二、三...九位数字组成的整数可以被9整除 分析:通常想法是遍历9!=原创 2008-11-26 19:13:00 · 8602 阅读 · 1 评论 -
一道趣味算术题
题目地址:http://club.excelhome.net/thread-175411-1-1.html 先看几个数:312132,231213,41312432,23421314 可以看到以上字串有以下特点: 2个1 之间有1个数,2个2 之间有2个数,2个3之间有3个数... 试找出由(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,原创 2008-11-26 10:31:00 · 31923 阅读 · 41 评论 -
随机排列n*n方阵
将n组1-n随机置于n*n的单元格中,使得每行,每列都是1-n的一个全排列 Sub Perm()Dim n As Long, i As Long, j As Long, arr(), brr(), t As Longn = 20ReDim arr(n - 1, n - 1)ReDim brr(n - 1)For i = 0 To n ^ 2 - 1arr(i原创 2008-11-25 21:51:00 · 5232 阅读 · 2 评论 -
Multi select elements which sums upto a certain number from an array
Give an array and a certain number,how to select some of the elements to sums upto the number?The following codes can bring you one or more solutions out:Sub Solve(ByVal Total As Double, B原创 2008-11-25 19:37:00 · 1773 阅读 · 0 评论 -
Largest Ten Digit Powers
The idea was Inspirated from the following link: Homogeneous Square Numbers (Provided by mathe, http://bbs.emath.ac.cn/thread-78-1-1.html) Look at the 10-digit number 9876543210,its the large原创 2009-01-11 15:39:00 · 1958 阅读 · 0 评论 -
The Number of Triangles Formed by Intersecting Diagonals of a Regular Polygon
Reproduced from http://www.cs.uwaterloo.ca/journals/JIS/sommars/newtriangle.html Journal of Integer Sequences, Vol. 1 (1998), Article 98.1.5The Number of Triangles Fo转载 2009-01-09 19:02:00 · 9301 阅读 · 0 评论 -
Ten-digit Fractions
Similar with another article of mine: Nine-digit FractionsProblem: Suppose integer A,B(A>B) and single C were satisified A/B=C and all digits(0-9) each used just once in the both sides of the原创 2009-02-11 13:45:00 · 5387 阅读 · 0 评论 -
Nine Digits Expression
Problem: Insert + ,-,*,/ signs as necessary in the string 123456789 to form an expression that evaluates to a certain number. Answer: Sub test() getall 2009, 1 getall 2009, 2En原创 2009-02-18 01:31:00 · 926 阅读 · 0 评论 -
Select n numbers from 1 to m with all of array 'all' and none of array 'none'
How to select n numbers from 1 to m with all of array all and none of array none? Try the following codes,please. Sub getall(ByVal m As Long, ByVal n As Long, ByRef all, ByRef none) Select原创 2009-12-15 22:07:00 · 1538 阅读 · 0 评论 -
Solutions to place plus or minus signs to a non-zero digits sequence 123456789 so that result of thus described arithmetic opera
Its very easy to solve the problem,but maybe useful for elementary students. Sub getall() Dim s(300) As String, v(300) As Long, result As Long, temp As Long, x(1 To 17) As String, t, op原创 2009-12-06 21:43:00 · 1496 阅读 · 0 评论 -
Number of sets of natural numbers less than n which sum to n.
The integer sequence was in : A111133 Seems easy. Sub Calc() Dim n As Long, count(), i As Long n = 500 ReDim count(n) count(0) = 1 For i = 1 To n For j = n To原创 2010-01-17 17:07:00 · 1571 阅读 · 0 评论 -
一道趣味数学题(二)
123456789这九个按顺序排列的数,要求在它们之间插入若干个+,-,*,/ ,使其结果正好等于100如: 1*2*3*4+5+6+7*8+9=100 以下代码在http://blog.csdn.net/northwolves/archive/2004/07/25/51038.aspx基础上修改而成: Sub main() 开始计算getall 100getall 10原创 2009-11-20 13:23:00 · 9825 阅读 · 22 评论 -
Get prime numbers nearby a number less than 10^10
For any given number less than 10^10,you can get prime numbers from 10000 numbers nearby it by the following codes: Private Sub Command1_Click()Debug.Print primes10000(987654321)End Sub原创 2008-12-28 20:32:00 · 1144 阅读 · 0 评论 -
C++ 实现"1234567"的全排列
原帖地址(http://starlancer.org/~is2004/mini/test/read.cgi/gen/1085476446/)方法1:#include char c[9];int x,j,k;int main(int i){for(i=35280;i--;)if(j=i%7,c[j+1]=j+49,!j){for(x=7,j=720;x-1;j转载 2008-12-24 16:05:00 · 1765 阅读 · 0 评论 -
使用动态规划解决有关数字组合的问题
题目:在SHEET2中列出SHEET1表中重量不超过170,体积不超过200的所有组合(http://club.excelhome.net/viewthread.php?tid=382466&page=1#pid2435030) Sheet1 序号重量体积1253022631327324原创 2008-12-20 13:43:00 · 1842 阅读 · 2 评论 -
动态规划一例
题目(http://topic.csdn.net/u/20081208/16/672693a2-ce8e-462a-ba07-a70ff2f0c5a2.html?seed=2109433475):有一个蛋糕,被切成了100份,现将这个100份装到12个盘子中,要求每个盘子中的份数不能为0,并且份数中必须还有数字3,不论个位或者十位,例如13份,37份等。 请给出每个盘子中各装多少份的所有答案。原创 2008-12-08 22:45:00 · 2554 阅读 · 0 评论 -
Nine-digit Fractions
Problem: Suppose integer A,B(A>B) and Double C were satisified A/B=C and all digits(1-9) each used just once in the all 3 numbers(A,B,C) respectively. An example:152463798÷123456789=1.2349原创 2009-02-17 21:31:00 · 1553 阅读 · 0 评论 -
递归实现数字的组合(C++)
递归实现数字的组合 #include void Combin(int m,int n,int a){ if(m == n){ if(a>0)printf("%d",a); while(n > 0) printf("%d",n--); printf("/n"); return;原创 2008-11-10 23:47:00 · 1915 阅读 · 1 评论 -
Google Treasure Hunt 2008--Robot Problem
QuestionA robot is located at the top-left corner of a 65 x 45 grid (marked Start in the diagram below).The robot can only move either down or right at any point in time. The robot is tryin原创 2009-01-01 12:46:00 · 1023 阅读 · 0 评论 -
About Google Treasure Hunt 2008
今天比较高兴,一口气做完了四道题目。看来VB6 仍有用武之地,尽管速度着实令人失望。 Thank you for entering the Treasure Hunt! Here are the first correct entries we received for the email address northwolves@gmail.com: Questi原创 2008-12-30 15:37:00 · 975 阅读 · 0 评论 -
输出螺旋矩阵(二)
输出这样的二维阵列:1 3 4 10 112 5 9 12 196 8 13 18 207 14 17 21 2415 16 22 23 25 Sub spiralmetrix(ByVal n As Integer)n = n - 1Dim i As Integer, j As Integer, a() As IntegerReDim a(n, n)a(0,原创 2006-05-07 19:10:00 · 1322 阅读 · 0 评论 -
输出螺旋矩阵(三)
输出这样的二维阵列:1 2 3 4 12 13 14 511 16 15 610 9 8 7分析:填充如此一个n*n阵列 ,先观察规律:n=1 1n=21 24 3对于n*n阵列,可以先将1-4*n 填充四周,内部用一个(n-2)*(n-2) 的阵列加上4*(n-1)填充,所以用递归比较直观,代码如下:Private Sub Command1原创 2006-05-07 19:26:00 · 1537 阅读 · 0 评论 -
谈谈五皇后问题
题目:在8×8格的国际象棋棋盘上摆放五个皇后,使其能攻击棋盘上的任何敌方棋子,有多少种摆法。分析:依然是一个组合问题。某个位置摆放一个“后”,则其所在行,所在列,所在对角线均属其控制范围,可用一个布尔型数组解决。代码:Option ExplicitSub getall(Optional ByRef allresult As String)Dim s(63) As Boole原创 2004-08-08 14:37:00 · 6507 阅读 · 4 评论 -
N皇后问题
题目:由八皇后问题扩展开来,即n*n的棋盘上摆放n个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。分析: 问题可以转化为12345...n 的满足某种条件(行已不等,列亦不等,只需设定其不在同一斜线上,即斜率不为 1 或-1 )的排列.代码:Private Sub queensn(ByVal n As Integer, ByRef原创 2004-08-09 17:35:00 · 2324 阅读 · 3 评论 -
非递归实现不重复序列的全排列(三)
?笔者曾利用进制转换实现不重复序列全排列(http://blog.csdn.net/northwolves/archive/2004/07/21/47400.aspx),但从0 循环到n^(n-1)-1,效率实在不高,经过仔细分析,发现一个另人激动的规律,详情见下表: ? A ? BA CBA DCBA CDBA CBDA CBAD BCA DBCA BDCA原创 2004-07-21 16:43:00 · 4007 阅读 · 2 评论 -
非递归实现不重复序列的全排列(一)
笔者曾写过利用递归实现不重复序列全排列的例子http://blog.csdn.net/northwolves/archive/2004/04/07/19590.aspx 现在给出另一个利用进制实现的代码: Sub pailie1(ParamArray x())Dim starttime As Single, endtime As SingleDim n As Integer, i As Long,原创 2004-07-21 14:29:00 · 4035 阅读 · 0 评论 -
非递归实现不重复序列的全排列(二)
下面给出一个回溯算法的代码,在VertyNew(华) 网友提供代码(http://community.csdn.net/Expert/topic/2909/2909080.xml?temp=.9990503)基础上稍作修改: Sub pailie2(ParamArray x())Dim starttime As Single, endtime As SingleDim i As Integer,原创 2004-07-21 14:39:00 · 2179 阅读 · 0 评论 -
非递归解决组合问题
从m 个互不相同元素中取 n 个元素,一般选用递归或回溯算法解决,本文旨在利用进制转换的方法达到这一目的。代码如下 Sub GETALL(ByVal num As Integer, ByRef x As Variant, ByRef RESULT() As String, Optional ByRef all As Long) Dim A() As String, b() As Integ原创 2004-07-25 09:29:00 · 3899 阅读 · 4 评论 -
如何得到某集合的所有子集合?
我们都知道,一个含n个元素的集合拥有2^n个子集合,并且不难发现,其中每个子集合都是从0到2^n-1 每个数的二进制格式中0 放弃,1选择的结果,如下所示: {} 000 {1} 100 {2} 010 {1,2} 110 {3} 001 {1,3} 101 {2,3} 011 {1,2,3} 1原创 2004-07-24 16:04:00 · 2463 阅读 · 0 评论 -
递归方法巧解不定方程(二)
笔者在2004年曾写过一篇 递归方法巧解不定方程 。昨天在一位网友的启发下,对代码进行了重写,使其能够设置每个变量的取值范围。代码如下Private Sub Command1_Click()Dim min(1 To 5) As Integer, max(1 To 5) As Integer, RESULTmin(1) = 2min(2) = 3max(1) = 3max(2) = 7jiefa原创 2006-06-07 09:05:00 · 1719 阅读 · 0 评论 -
Select m elements from max elements with limits
I have max integers between 1 and max, If I choose m of them to get a sum sums ,Suppose I have counts ways,How can I get the counts ?I write some codes by recursion---------------------------原创 2006-10-27 21:22:00 · 1128 阅读 · 0 评论 -
递归列举从数组b()中选出某些元素(允许重复)使其和等于num的所有组合
Dim mycount As Long, s(1 To 65536, 1 To 1), num As LongSub main()Dim a, bnum = 45b = Array(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)ReDim a(num)a(0) = b(0)search num, 0, 0, a, b[a1].Resize(65原创 2008-10-24 19:37:00 · 1281 阅读 · 0 评论 -
Do you know how many combinations to select n numbers from 1 to m with sum of which is mysum?
Do you know how many combinations to select n numbers from 1 to m with sum of which is sum?Sub getit()Dim m&, n&, mysum&, i&, j&, k&, count()m = 100: n = 30: mysum = 700ReDim count(m, n, -mysum T原创 2007-12-03 00:37:00 · 1671 阅读 · 0 评论 -
递归实现数字排列组合
参考彭希仁的递归算法Sub macro1()Dim arr() As Stringgetall 9, 3, "", arrDebug.Print Join(arr, ",")End SubSub getall(ByVal m As Byte, ByVal n As Byte, ByRef a As String, ByRef arr() As String, Optional ByRef co原创 2007-10-30 16:33:00 · 2706 阅读 · 0 评论 -
四阶素数幻方问题
用1到16构成一个四阶幻方,要求任意相邻两个方格中的数字之各均为素数? (原帖见:http://topic.csdn.net/u/20070830/18/1f1957c1-5e66-4c3b-8883-d7eef64c8da1.html)NowCan 网友的解法:直接递归搜,4阶很快的。以下这个程序就是这样的思路,结果未经过验证。 /* 将1-N^2这N^2个数添如N*N的方格中,每个原创 2007-10-01 17:02:00 · 2653 阅读 · 0 评论 -
n阶幻方的填法(n≥3)
幻方,亦称纵横图。台湾称为魔术方阵。将自然数1,2,3,……n*n排列成一个n*n方阵,使得每行、每列以及两对角线上的各个数之和都相等,等于n/2*(n*n+1),这样的方阵称为幻方。例如:把1,2,3,4,5,6,7,8,9填入3*3的格子,使得:每行、每列、两条对角线的和是15。 8 1转载 2007-09-23 11:16:00 · 13271 阅读 · 1 评论