文档章节

组合问题(先提取数字+全组合)

t
 tedzheng
发布于 02/22 11:32
字数 651
阅读 11
收藏 0

今天在网上看到一个问题:想从A,B,C,D,E字母中选取3个A,B,C;并做出全组合ABC,ACB,BAC,BCA,CBA,CAB。这样的结果会有多少?

想法也是和问题一致:

1.  先从数列中选取所需要的值: A,B,C,D,E中选取A,B,C

    程序Combine_n_?是抽取数值;Combine_n_F表示从前往后  | Combine_n_B表示从后往前

2. 做出所取值A,B,C的全部组合情况;ABC,ACB,BAC,BCA,CBA,CAB

    程序Permute进行全组合

Public out, iOut
Public arr
Public Org
Public num
Public nMax

'Combination of n from M
Sub Combination_x_In_X()
Dim t
Dim i
Dim m
t = Timer

iOut = 0
m = 1
num = 3                 'Combination Number
nMax = 5                'Number of Range
ReDim Org(1 To nMax)       'Identify Data
'Read Data from Worksheet to Array
For i = 1 To nMax
    Org(i) = Sheet1.Cells(1, i).Value
Next i

ReDim arr(1 To num)          'Identify temp array
ReDim out(1 To 100)          'Identify output array

'Combine_n_B nMax, num        'main program
Combine_n_F 1, 1           'main program

'output result
For i = 1 To iOut
    m = m + 1
    Sheet1.Cells(m, 6) = out(i)
Next i
Debug.Print Timer - t
End Sub

'Combine program
'from front to back
'm: range of Numer
'n: current input number
Sub Combine_n_F(m, n)
Dim i, j
For i = m To nMax           'Loop to range
   arr(n) = Org(i)          'data into temp array
   If n < num Then          'recursion: process next postion of data
       Combine_n_F i + 1, n + 1
   Else                    'exit
'        Array_In_Out arr
       Permute arr, 1, num      'program
    End If
Next i
End Sub

'Combine program
'from back to front
'm: range of Numer
'n: current input number
Sub Combine_n_B(m, n)
Dim i, j
For i = m To n Step -1
   arr(n) = Org(i)         'data into temp array
   If n > 1 Then           'recursion: process next postion of data
       Combine_n_B i - 1, n - 1
   Else                    'exit
        Array_In_Out arr
'       Permute arr, 1, num      'program
    End If
Next i
End Sub

'Convert the position
Sub Permute(arr, m, n)
Dim temp
Dim i&
If m = n Then
    Array_In_Out arr    'data into output array
    Exit Sub
Else
    For i = m To n Step 1
    temp = arr(m)     'switch
    arr(m) = arr(i)
    arr(i) = temp
    Permute arr, m + 1, n
    temp = arr(m)     'back
    arr(m) = arr(i)
    arr(i) = temp
    Next i
End If
End Sub

'data into output array
'store as string
Sub Array_In_Out(arr)
Dim i
Dim Str$
For i = 1 To UBound(arr)
    Str = Str & arr(i)
Next i
iOut = iOut + 1
out(iOut) = Str
End Sub

5个字母中抽取3个例子结果:

ABC
ACB
BAC
BCA
CBA
CAB
ABD
ADB
BAD
BDA
DBA
DAB
ABE
AEB
BAE
BEA
EBA
EAB
ACD
ADC
CAD
CDA
DCA
DAC
ACE
AEC
CAE
CEA
ECA
EAC
ADE
AED
DAE
DEA
EDA
EAD
BCD
BDC
CBD
CDB
DCB
DBC
BCE
BEC
CBE
CEB
ECB
EBC
BDE
BED
DBE
DEB
EDB
EBD
CDE
CED
DCE
DEC
EDC
ECD

© 著作权归作者所有

共有 人打赏支持
t
粉丝 2
博文 83
码字总数 43583
作品 0
奉贤
程序员
私信 提问
python机器学习库keras——AutoEncoder自编码、特征压缩

全栈工程师开发手册 (作者:栾鹏) python教程全解 keras使用深度网络实现自编码,也就是说对每个样本的n维特征,使用k为特征来表示,实现编码压缩的功能。也实现了特征选择的功能。比如手写...

luanpeng825485697
2018/05/01
0
0
史上最全的 Python 3 类型转换指南

int 支持转换为 int 类型的,仅有 、、,其他类型均不支持。 float -> int 会去掉小数点及后面的数值,仅保留整数部分。 str -> int 如果字符串中有数字(0-9)和正负号(+/-)以外的字符,就会报...

Shocker
2018/07/23
0
0
CS231n (winter 2016) : Assignment1(续)

接着上篇 CS231n : Assignment 1 继续: 这里,我给出我的最优模型代码和第一层权重W1的可视化结果,识别率还有上升空间,欢迎小伙伴贴出更高的识别率。 nntwolayerbest.py 代码如下: 最后再...

Deepool
2016/06/26
0
0
房价在手,天下我有 --反手就撸一个爬虫(终)

接上篇,科科,好,我们继续 我们在这里先把json数据入库吧~ 首先,database/scheme里定义好数据类型。 然后我们需要到中间件里去建立连接数据库和执行插入的动作。 middleWares/database.j...

我母鸡啊!
2018/07/31
0
0
省钱利器!基于TensorFlow的端到端验证码识别

最近机器学习很热,作为机器学习在图像识别方面最火的研究领域,神经网络将图像识别带入了新的高度,很多之前还只能在实验室中的理想情况下的成果,目前已经大量的运用在了实际生产环境中了,...

陋室
2018/07/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vert.x系列(二)--EventBusImpl源码分析

前言:Vert.x 实现了2种完成不同的eventBus: EventBusImpl(A local event bus implementation)和 它的子类 ClusteredEventBus(An event bus implementation that clusters with other Ve......

冷基
45分钟前
1
0
Perl - 获取文件项目

参考:http://www.runoob.com/perl/perl-directories.html 下面返回JSON格式的文件列表 #!/usr/bin/perluse strict;use warnings;use utf8;use feature ':5.26';require Fi......

wffger
昨天
2
0
vue组件系列3、查询下载

直接源码,虽然样式样式不好看,逻辑也不是最优,但是可以留作纪念。毕竟以后类似的功能只需要优化就可以了,不用每次都重头开始。。。 <template> <div class="pre_upload"> <div ...

轻轻的往前走
昨天
2
0
java浅复制和深复制

之前写了数组的复制,所以这里继续总结一下浅复制和深复制。 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝。 深拷贝:对基本数据类型进行值传递,对引用数据类型,...

woshixin
昨天
1
0
kubernetes 二进制包安装

环境 角色 主机名 内网 IP 集群 IP 操作系统 服务 执行目录 部署机 k8s-master master120 10.0.4.120 - CentOS kube-apiserver kube-scheduler kube-controller-manager /opt/kubernetes/ et......

Colben
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部