| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1160 人关注过本帖
标题:效率太低请大神修正,求助!
只看楼主 加入收藏
洗洗彩票
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-3-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:20 
效率太低请大神修正,求助!
数据表上传到:http://www.
说明历史号码与33选6的所有组合数逐一对比的方法,现在用VFP编了程序代码,但本人菜鸟级,于是执行效率太低,
请大神指点为谢。
以下是代码
程序代码:
IF EMPTY()
    MESSAGEBOX("请选择对比期数!",64,"消息窗口")
     
    retu
ENDIF
dimension iRed(33)
j=1
FOR i=1 to 33
    mycheck="thisform.check"+ALLTRIM(STR(i))
    IF &mycheck..value=1
        iRed(j)=IIF(i<10,"0","")+ALLTRIM(STR(i))
        j=j+1
    ENDIF
NEXT
IF j-1<6 
  MESSAGEBOX("至少选6位!",64,"消息窗口")
  RETURN
ENDIF
SELECT ssq
DELETE all
PACK
thisform.image1.Visible= .T.
thisform.image1.Width=0 
thisform.label7.visible= .T. 
Tstar=DATETIME()
i=1
FOR i1=1 to j-6
    FOR i2=i1+1 to j-5
        FOR i3=i2+1 to j-4
            FOR i4=i3+1 to j-3
                FOR i5=i4+1 to j-2
                    FOR i6=i5+1 to j-1
                        INSERT into ssq(id,hm,no1,no2,no3,no4,no5,no6) values(STR(i,10),ired(i1)+" "+ired(i2)+" "+ired(i3)+" "+ired(i4)+" "+ired(i5)+" "+ired(i6),ired(i1),ired(i2),ired(i3),ired(i4),ired(i5),ired(i6))
                        i=i+1
                    NEXT
                NEXT
            NEXT
        NEXT
    NEXT
NEXT
SELECT ssq
REPLACE r1 with 0 ,r2 with 0,r3 with 0,r4 with 0,r5 with 0,r6 with 0 ,r7 with 0 all
GO 1

SELECT RECNO() as hm_recn ,qh FROM hm WHERE ALLTRIM(qh)=ALLTRIM() INTO CURSOR te_a
hmrecc=te_a.hm_recn
SELE hm
&&STORE RECCOUNT() to hmrecc
LOCATE for qh= RECNO() to hmrecn
jd=hmrecc-hmrecn
jdt=0
do while not EOF()
    chm=hm.red1+" "+hm.red2+" "+hm.red3+" "+hm.red4+" "+hm.red5+" "+hm.red6
    SELECT ssq
    do while not EOF()
        n=IIF(AT(No1,chm)>0,1,0)+IIF(AT(no2,chm)>0,1,0)+IIF(AT(no3,chm)>0,1,0)+IIF(AT(no4,chm)>0,1,0)+IIF(AT(no5,chm)>0,1,0)+IIF(AT(no6,chm)>0,1,0)
        DO CASE
        CASE n=0
            REPLACE r1 with r1+1
        CASE n=1
            REPLACE r2 with r2+1
        CASE n=2
            REPLACE r3 with r3+1
        CASE n=3
            REPLACE r4 with r4+1
        CASE n=4
            REPLACE r5 with r5+1
        CASE n=5
            REPLACE r6 with r6+1
        CASE n=6
            REPLACE r7 with r7+1
        ENDCASE
        SKIP
    ENDDO
    jdt=jdt+1
    thisform.image1.Width=jdt/jd*700
    SELECT ssq
    GO 1
    SELECT hm
    SKIP
    IF RECNO()=hmrecc+1
         EXIT do
    ENDIF
ENDDO
SELECT ssq
REPLACE rtext with ALLTRIM(STR(r1))+" "+ALLTRIM(STR(r2))+" "+ALLTRIM(STR(r3))+" "+ALLTRIM(STR(r4))+" "+ALLTRIM(STR(r5))+" "+ALLTRIM(STR(r6))+" "+ALLTRIM(STR(r7)) all

Tend=DATETIME()
MESSAGEBOX("一共生成了"+ALLTRIM(STR(i-1))+"条记录,花费"+ALLTRIM(STR(tend-tstar))+"秒。",64,"消息窗口")
thisform.label7.Visible= .F. 
thisform.image1.Visible= .F. 
IF MESSAGEBOX("您需要导出成TXT文件吗?",4+32,"消息窗口")=6
    STORE ALLTRIM(STR(RECCOUNT())) TO ssqrecc
    GO 1
    txtfile="ssq.txt"
    STRTOFILE("ID,HM,NO1,NO2,NO3,NO4,NO5,NO6,r1,r2,r3,r4,r5,r6,r7,RTEXT"+CHR(13)+CHR(10),txtfile,0)
        do while not EOF()
            STRTOFILE(ALLTRIM(id)+","+hm+","+No1+","+no2+","+no3+","+no4+","+no5+","+no6+","+ALLTRIM(STR(r1))+","+ALLTRIM(STR(r2))+","+ALLTRIM(STR(r3))+","+ALLTRIM(STR(r4))+", "+ALLTRIM(STR(r5))+", "+ALLTRIM(STR(r6))+","+ALLTRIM(STR(r7))+","+ALLTRIM(rtext)+CHR(13)+CHR(10),txtfile,1)
            WAIT WINDOW NOWAIT ALLTRIM(STR(RECNO()))+"/"+ssqrecc
            skip
        enddo
    MESSAGEBOX("已经生成TXT文件!",64,"消息窗口")
ENDIF
搜索更多相关主题的帖子: 数据表 历史 
2014-03-02 16:50
洗洗彩票
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-3-1
收藏
得分:0 
汗!手头仅仅20分,全豁出去,学习中 ......
2014-03-02 16:51
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
EXCEL版本太高,请转换为DBF格式上传本贴。

坚守VFP最后的阵地
2014-03-02 17:29
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
逐一对比有什么意义。

坚守VFP最后的阵地
2014-03-02 17:36
洗洗彩票
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-3-1
收藏
得分:0 
用一个统计表说明会更详尽一些,【见附件】
参见表格里的计算公式:在Q2:V2单元格输入33选5的组合号码,统计数据显示在AC2:AI2单元格里,一共有1107568组号码。

相同数的个数统计公式是  
双色球33选6数据统计表.zip (1000.76 KB)
=IF($A1614="","",SUMPRODUCT((COUNTIF($B1614:$G1614,$Q$2:$V$2)>0)*1))
开出过 0 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,0)---在AC2单元格里,可记作R1
开出过 1 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,1)---在AD2单元格里,可记作R2
开出过 2 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,2)---在AE2单元格里,可记作R3
开出过 3 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,3)---在AF2单元格里,可记作R4
开出过 4 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,4)---在AG2单元格里,可记作R5
开出过 5 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,5)---在AH2单元格里,可记作R6
开出过 6 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,6)---在AI2单元格里,可记作R7
2014-03-02 17:51
洗洗彩票
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-3-1
收藏
得分:0 
这个是2003版本的数据表
双色球33选6数据统计表a.zip (876.57 KB)
2014-03-02 17:58
洗洗彩票
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-3-1
收藏
得分:0 
数据表里有公式说明, 转换为DBF格式行吗?请教
2014-03-02 18:00
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
不如自己生成组合表快。我帮你传下数据吧
历史数据截止日期20140227,期号为2014021,共1614期:
ssq.rar (7.87 KB)

下面代码生成双色球的组合注数(共1107568注[1至33共33个数据,每注红球6个号码]):
程序代码:
CREATE CURSOR TMP (X C(2))
T1=SECONDS()
FOR I= 1 TO 33
    INSERT INTO TMP(X) VALUES (PADL(I,2,[0]))
ENDFOR

SELECT *,PADL(RECNO(),7,[0]) 序号 FROM (SELECT A.X+B.X+C.X+D.X+E.X+F.X QH FROM TMP A ;
INNER JOIN TMP B ON A.X<B.X ;
INNER JOIN TMP C ON B.X<C.X ;
INNER JOIN TMP D ON C.X<D.X ;
INNER JOIN TMP E ON D.X<E.X ;
INNER JOIN TMP F ON E.X<F.X ) A INTO CURSOR TEMP
MESSAGEBOX(SECONDS()-T1)
BROWSE

坚守VFP最后的阵地
2014-03-02 18:31
洗洗彩票
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-3-1
收藏
得分:0 
历史数据截止日期20140227,期号为2014021,共1614期,命名为history.dbf
生成双色球的组合注数(共1107568注[1至33共33个数据,每注红球6个号码]),命名为ssq.dbf
现在需要做的事情是把history.dbf的6个号码ssq.dbf里的6个号码逐一对比,参见附件的表格说明
[local]1[/local]
开出过 0 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,0)---在AC2单元格里,可记作R1
开出过 1 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,1)---在AD2单元格里,可记作R2
开出过 2 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,2)---在AE2单元格里,可记作R3
开出过 3 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,3)---在AF2单元格里,可记作R4
开出过 4 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,4)---在AG2单元格里,可记作R5
开出过 5 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,5)---在AH2单元格里,可记作R6
开出过 6 个红球的次数统计公式=COUNTIF($AQ$9:$AQ$15199,6)---在AI2单元格里,可记作R7
2014-03-03 12:15
洗洗彩票
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2014-3-1
收藏
得分:0 
2014-03-03 12:16
快速回复:效率太低请大神修正,求助!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.076714 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved