`
eimhee
  • 浏览: 2113813 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
?笔者曾利用进制转换实现不重复序列全排列(http://blog.csdn.net/northwolves/archive/2004/07/21/47400.aspx),但从0 循环到n^(n-1)-1,效率实在不高,经过仔细分析,发现一个另人激动的规律,详情见下表: ? A<o:p></o:p> <o:p>?</o:p> BA<o:p></o:p> CBA<o:p></o:p>
下面给出一个回溯算法的代码,在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, j As Integer, Num As Long, n As IntegerDim a() As Integer '记载数组下标Dim b() As Integer '记载使用标识n = UBound ...
笔者曾写过利用递归实现不重复序列全排列的例子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, Num As Integer, j As IntegerDim temp1() As String, temp2 As Long, all As New Collectionn = UBound(x) ...
下面的代码可以将任意日期(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 = "○一二三四五六七八九十" If Not IsDate(mydate) Then '错误处理MsgBox "非正确日期格式!", vbInformation, "警告&qu ...
前些时间写的关于大整数的阶乘计算,效率总是再难以提高:(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/develop/article/28/28641.shtm) 今日突然想到 n!=1*2*3*....*n     →    lg(n!)=lg(1*2*3*....*n)=lg(1)+lg(2)+ lg( ...
很难想象只要改动几句代码就可以大幅提高执行的效率,在前几篇文章中我写了几种大数阶乘的算法(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=28432),效率都比较低。今日看了homezj(http://www.csdn.net/Develop/article/28/28584.shtm )的代码,很受启发,优化如下:   <一&g ...
求整数的幂:   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 LongReDim a(1 To 1)a(1) = 1k = 0stimer = TimerDo While k &lt; nk = k + 1temp = UBound(a)For i = 1 ...
快速组合数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 = y: y = TEMP   'LET X < Y   Do      TEMP = y Mod x      If TEMP = 0 Then ZDGYS = x: Exit Funct ...
下面的算法在 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, k As Long, TEMP As Long, stimer As DoubleIf n < 0 Then Exit SubReDim x(1)ReDim XYS(1)x(1) = 1XYS( ...
今天整理文件时发现了以前写的货币金额中文转换(转换一亿亿元以下数目的货币)的代码,帖出来与大家共享:   Function daxie(money As String) As String 'Dim x As String, y As StringConst zimu = ".sbqwsbqysbqwsbq" '定义位置代码Const letter = "0123456789sbqwy.zjf" '定义汉字缩写Const upcase = "零壹贰叁肆伍陆柒捌玖拾佰仟萬億圆整角分" '定义大写汉字Dim temp As Stringte ...
整数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 VariantDim xl As Long, yl As Long, temp As Long, i As Longxl = Len(Trim(X))yl = Len(Trim(Y)) ReDim result(1 ...
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 XYS() As Integer, x() As Integer, ...
下面的代码可以将任意日期(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 Stringmyyear = Format(mydate, "yyyy")For i = 1 To 4d(0) = d(0) & Mid("○一二三四五六七八九& ...
对于一般的整型数字,16进制与10进制 间的转化可以用CLNG(),HEX()函数解决,但遇上天文数字,这些函数就无能为力了。下面是笔者写的几个函数,演示了天文数字计算中的一些技巧。 Dim largehex As String, largedec As String, start As Long, Y(20) As String '预备函数Function sums(ByVal X As String, ByVal Y As String) As String ' sum of two hugehexnum(两个大数之和)Dim max As Long, temp As Long, I As ...
      文本框属性为允许多行显示时,由于是软回车实现的分行,无法用SPLIT(TEXT1.TEXT,VBCRLF)准确地取出指定行的内容。本文利用SENDMESSAGE 系列函数,通过发送文本框消息,实现了获取包含指定字符串的行,并演示了如何获取文本框中文本总行数和任意指定行的文本内容。 'add a textbox with "multiline=true","scrollbars=2". Private Declare Function SendMessage Lib "USER32" Alias "SendMessa ...
Global site tag (gtag.js) - Google Analytics