自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

northwolves[狼行天下] 的专栏

无知无惧,无欲无敌。

  • 博客(229)
  • 收藏
  • 关注

原创 非递归解决组合问题

从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 3896 4

原创 一道趣味数学题

题目: 将+,-,*,/ 添加到 1,2,3,4,5,6,7,8,9 之间,使其构成的算式四则运算结果等于100,如: 1*2*3*4+5+6+7*8+9=100 分析: 以上算式相当于把1~9  9 个数字和 8个(+,-,*,/ )作一个特殊顺序的排列,共有4^8=65536 种可能,再从中进行取舍。 代码: Option ExplicitPrivate Declare Function Eb

2004-07-25 01:08:00 10743 8

原创 如何得到某集合的所有子集合?

我们都知道,一个含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 2459

原创 再谈八皇后问题

题目:十九世纪著名的数学家高斯提出:在8×8格的国际象棋棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。分析:其实问题可以转化为12345678的满足某种条件(行已不等,列亦不等,只需设定其不在同一斜线上,即斜率不为 1 或-1 )的排列.通过前两天用非递归方式解决序列的全排列问题(.http://blog.csdn.net

2004-07-24 00:16:00 3448

原创 关于走楼梯的递归算法

题目:一个共有20个台阶的楼梯,从下面走到上面。一次只能迈一个台阶或两个台阶,并且不能后退,走完这个楼梯共有多少种方法。分析:1 步台阶只有1种走法(1)2步台阶2种(11、2)3步台阶有3种(111、12、21)4 步台阶有5种(1111、112、121、211、22)5 步台阶有8种(11111、1112、1121、1211、122、2111、212、221)6

2004-07-23 07:12:00 6838 2

原创 非递归实现不重复序列的全排列(三)

?笔者曾利用进制转换实现不重复序列全排列(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 4002 2

原创 非递归实现不重复序列的全排列(二)

下面给出一个回溯算法的代码,在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 2172

原创 非递归实现不重复序列的全排列(一)

笔者曾写过利用递归实现不重复序列全排列的例子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 4029

原创 完整的将日期时间转换为汉字的代码

下面的代码可以将任意日期(1000-01-01 0:0:0------>9999-12-31 23:59:59)转换为汉字显示 Function datename(ByVal mydate As String) As String Dim i As Long, mystr(6) As String, temp As StringConst all As String = "○一二三四五六七八九十"

2004-07-21 14:12:00 3754

原创 大数阶乘的计算(六)

前些时间写的关于大整数的阶乘计算,效率总是再难以提高:(http://dev.csdn.net/develop/article/28/28306.shtm,http://dev.csdn.net/develop/article/28/28308.shtm,http://dev.csdn.net/develop/article/28/28432.shtm,http://dev.csdn.net/de

2004-06-09 10:08:00 2171

原创 大数阶乘的计算(五)

很难想象只要改动几句代码就可以大幅提高执行的效率,在前几篇文章中我写了几种大数阶乘的算法(http://www.csdn.net/Develop/read_article.asp?id=28306,http://www.csdn.net/Develop/read_article.asp?id=28308,http://www.csdn.net/Develop/read_article.asp?id

2004-06-07 09:59:00 2109 1

原创 整数幂的求解

求整数的幂: Private Sub Command1_Click()power 64, 10000 64^10000End SubSub power(ByVal x As Long, ByVal n As Integer, Optional ByRef result As String)Dim a() As Long, s() As String, i As Long, temp As

2004-06-05 20:27:00 1524

原创 全国15亿人口中选1000个代表有多少种选法?

快速组合数C(N,K)=N*(N-1)*(N-2)*...*(N-K+1)/1*2*3*...*K  的求法:   Function ZDGYS(ByVal x As Long, ByVal y As Long) As Long GET Greatest Common Divisor最大公约数     Dim TEMP As Long    If x > y Then TEMP = x: x

2004-06-04 11:34:00 1489

原创 大数阶乘的计算(三)

下面的算法在 http://www.csdn.net/Develop/Edit.asp?id=28308基础上改进,比其至少快10%:Sub calcfactorial(ByVal n As Integer)Dim XYS() As Integer, x() As Integer, y() As Integer, result() As String, i As Long, j As Long

2004-05-30 17:00:00 1139

原创 实现货币金额中文大写转换的程序

今天整理文件时发现了以前写的货币金额中文转换(转换一亿亿元以下数目的货币)的代码,帖出来与大家共享: Function daxie(money As String) As String Dim x As String, y As StringConst zimu = ".sbqwsbqysbqwsbq" 定义位置代码Const letter = "0123456789sbqwy.zjf

2004-05-30 17:00:00 1713

原创 大数阶乘的计算(一)

整数n的阶乘指 1*2*3*...*(n-1)*n 的值,在n=171时,计算机一般会出错(“溢出”),本文采用字符串模拟数字乘法运算,使计算10000!成为可能:Function multi(ByVal X As String, ByVal Y As String) As String multi of two huge hexnum(两个大数之积)Dim result As Varian

2004-05-30 16:58:00 1388

原创 大数阶乘的计算(二)

http://expert.csdn.net/Expert/topic/3105/3105509.xml?temp=.1253168与笔者的另一算法(http://www.csdn.net/Develop/read_article.asp?id=28306)相比,采用下面的方法,阶乘的计算速度快了好几倍! Sub calcfactorial(ByVal n As Integer)Dim

2004-05-30 16:58:00 1282

原创 关于日期的中文转换

下面的代码可以将任意日期(1000-01-01------>9999-12-31)转换为汉字显示: Private Sub Command1_Click()MsgBox datename(Date)End SubFunction datename(ByVal mydate As Date) As StringDim i As Long, d(3) As String, myyear As

2004-05-28 10:33:00 1234

原创 关于天文数字十进制与十六进制间的转换

对于一般的整型数字,16进制与10进制 间的转化可以用CLNG(),HEX()函数解决,但遇上天文数字,这些函数就无能为力了。下面是笔者写的几个函数,演示了天文数字计算中的一些技巧。Dim largehex As String, largedec As String, start As Long, Y(20) As String预备函数Function sums(ByVal X As S

2004-05-17 17:10:00 2475

原创 如何取得文本框中包含指定字符串的行

      文本框属性为允许多行显示时,由于是软回车实现的分行,无法用SPLIT(TEXT1.TEXT,VBCRLF)准确地取出指定行的内容。本文利用SENDMESSAGE 系列函数,通过发送文本框消息,实现了获取包含指定字符串的行,并演示了如何获取文本框中文本总行数和任意指定行的文本内容。add a textbox with "multiline=true","scrollbars=2".

2004-04-19 00:10:00 1806

原创 利用EXCEL 实现字符串的计算

     如何计算给定的字符串计算表达式,如“ 1+2*3-4/5+ 6^7” 的值?笔者在使用EXCEL2002 时发现在单元格中可以输入此类表达式,输出的则是计算结果,所以写了一个函数,与大家共享。 引用microsoft excel 10.0 object library( OR OTHER VERSION) add a textbox and a commandbutton t

2004-04-07 22:20:00 2929

原创 递归与排列

笔者曾写过一个递归与组合的算法(http://www.csdn.net/Develop/read_article.asp?id=23809),下面给出一个排列的递归算法,请大家指教。Private Sub Command1_Click() 列出数组a 的全排列Dim a(8) As String, temp As StringFor i = 0 To 8a(i) = iNexttemp =

2004-04-07 22:15:00 2083

原创 利用API 实现字符串表达式的计算

下面实现字符串表达式计算代码由笔者收藏的本论坛代码改编,记不清是哪位网友提供的了,非常感谢。Option ExplicitPrivate Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByV

2004-04-05 23:22:00 1708

原创 能否判断动态数组有没有被分配过?

       动态数组在VB语言中常能起到出奇制胜的作用。但数组有没有被重新定义或释放,用“is empty”,“is null”,“=" "”等方法都不起作用。所以判断时一般采用侦别错误消息(ON ERROR )的方法。下面给出一个非错误侦别的代码,判断动态字符串数组的分配情况: Private Sub Command1_Click()Dim a() As String, i As Lo

2004-02-05 00:49:00 1111

原创 API 更改系统菜单条目

一个运用API 更改系统菜单,复制系统菜单的例子。(需要注意的是:如果要响应菜单项的单击事件,可能要用到钩子函数和更多的代码)Option ExplicitPrivate Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVa

2004-02-02 23:31:00 1972

原创 递归与组合

       福利彩票和体育彩票近两年比较火暴,相应在VB论坛上大家讨论也较多。其实选择彩票与集合选择子集相同道理。下面给出一种VB的递归算法(虽然明知存入数组会加快运算速度,但最终也没能满意地实现,请大家多多指教。另外,效率确实不高)Option ExplicitPrivate Sub Command1_Click()Dim temp, i As Long, starttime As L

2004-02-01 23:19:00 1626 1

原创 菜单字体颜色可以更改吗?

     一个简单的API语句可以实现更改菜单字体颜色:Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorvalues As Long) As LongPrivate Sub Form_Load() SetSysColors 1, 7, v

2004-02-01 23:16:00 1685

原创 递归方法巧解不定方程

       多元一次方程往往采用循环求解。笔者在与网友们讨论一个问题(http://expert.csdn.net/Expert/topic/2607/2607772.xml?temp=.7494928)过程中,琢磨出一种算法,采用递归进行多元一次方程的求解。并将解分为整数解和 非负整数解两种情况,请大家指教。  Private Sub Command1_Click() 演示求X1

2004-02-01 23:15:00 2872

原创 利用集合进行数组的排序

       笔者在学习VB中发现利用集合可以进行排序,优化后比冒泡法快得多。下面是完整的函数代码,演示了如何进行数组的升序或降序排列。 Option ExplicitDim X(100) As DoubleDim y(100) As StringPrivate Sub Command1_Click() 演示数字排序Dim a(100) As Double, z(100) As Stri

2004-01-26 01:34:00 3932 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除