| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3928 人关注过本帖, 1 人收藏
标题:数据组合问题
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9798
专家分:26886
注 册:2012-2-5
结帖率:88.24%
收藏(1)
已结贴  问题点数:100 回复次数:28 
数据组合问题
数据:
tt.rar (540 Bytes)

有一二维数组8行8列,为了便于查看数据放在了下表中
图片附件: 游客没有浏览图片的权限,请 登录注册

根据规则生成下列数据(上面数组中可生成有效数据64条,下面只显示了前28条)
图片附件: 游客没有浏览图片的权限,请 登录注册

上表中数据的生成规则为:
N1*10000000+N2*1000000+N3*100000+N4*10000+N5*1000+N6*100+N7*10+N8
注:N1-N8均小于8方为有效数据。数据生成方法类似于笛卡尔积。
原来有代码,只是太长了,效率也不是太高,代码大致如下:

        FOR j1=1 TO  8
            IF Array_Code(j1,1)<8
                FOR j2=1 to 8
                    IF Array_Code(j2,2)<8
                        FOR j3=1 to 8
                            IF Array_Code(j3,3)<8
                                FOR j4=1 to 8
                                    IF Array_Code(j4,4)<8
                                        FOR j5=1 to 8
                                            IF Array_Code(j5,5)<8
                                                FOR j6=1 to 8
                                                    IF Array_Code(j6,6)<8
                                                        FOR j7=1 to 8
                                                            IF Array_Code(j7,7)<8
                                                                FOR j8=1 to 8
                                                                    IF Array_Code(j8,8)<8
                                                                        DIMENSION Array_Germ_Code(1,6)
                                                                        D_Germ_Code=Array_Code(j1,1)*10000000+Array_Code(j2,2)*1000000+;
                                                                            Array_Code(j3,3)*100000+Array_Code(j4,4)*10000+;
                                                                            Array_Code(j5,5)*1000+Array_Code(j6,6)*100+;
                                                                            Array_Code(j7,7)*10+Array_Code(j8,8)
                                                                        D_Diff_Val=Array_Diff(j1,1)*Array_Diff(j2,2)*;
                                                                            Array_Diff(j3,3)*Array_Diff(j4,4)*;
                                                                            Array_Diff(j5,5)*Array_Diff(j6,6)*;
                                                                            Array_Diff(j7,7)*Array_Diff(j8,8)
                                                                        Array_Germ_Code(1,1)=Try_Help.Card_No   
                                                                        Array_Germ_Code(1,2)=D_Germ_Code   
                                                                        Array_Germ_Code(1,3)=Try_Help.germ   
                                                                        Array_Germ_Code(1,4)=1.00   
                                                                        Array_Germ_Code(1,5)=Try_Help.no
                                                                        Array_Germ_Code(1,6)=D_Diff_Val
                                                                        SELECT Temp_Germ_Code
                                                                        APPEND FROM Array Array_Germ_Code
                                                                    ENDIF
                                                                ENDFOR
                                                            ENDIF
                                                        ENDFOR
                                                    ENDIF
                                                ENDFOR
                                            ENDIF
                                        ENDFOR
                                    ENDIF
                                ENDFOR
                            ENDIF
                        ENDFOR
                    ENDIF
                ENDFOR
            ENDIF
        ENDFOR
请高人指导

[此贴子已经被作者于2018-8-25 14:18编辑过]

搜索更多相关主题的帖子: 数据 组合 生成 FOR IF 
2018-08-25 14:13
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:20 
你的 tt,rar 文件打不开


gnLower = 0   && 最小值
gnUpper = 15  && 最大值

*!*    获取测试数据
Create Cursor MyTest (N1 I, N2 I, N3 I, N4 I, N5 I, N6 I, N7 I, N8 I)
For I = 1 To 8
    Insert Into MyTest Values (Int((gnUpper - gnLower + 1) * Rand( ) + gnLower), ;
        INT((gnUpper - gnLower + 1) * Rand( ) + gnLower), ;
        INT((gnUpper - gnLower + 1) * Rand( ) + gnLower), ;
        INT((gnUpper - gnLower + 1) * Rand( ) + gnLower), ;
        INT((gnUpper - gnLower + 1) * Rand( ) + gnLower), ;
        INT((gnUpper - gnLower + 1) * Rand( ) + gnLower), ;
        INT((gnUpper - gnLower + 1) * Rand( ) + gnLower), ;
        INT((gnUpper - gnLower + 1) * Rand( ) + gnLower) )
Endfor

Select A.N1*10000000+A.N2*1000000+A.N3*100000+A.N4*10000+A.N5*1000+A.N6*100+A.N7*10+A.N8 As Ret ;
    From MyTest a, MyTest b

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-08-25 16:22
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9798
专家分:26886
注 册:2012-2-5
收藏
得分:0 
tt.rar (541 Bytes)

坚守VFP最后的阵地
2018-08-25 16:57
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9798
专家分:26886
注 册:2012-2-5
收藏
得分:0 
回复 2楼 红星二锅头
谢谢红版主了
套入我的数据,最后结果不是我所需要的。
数据再次上传了。
最后生成的数据最多为8位,首位最大为7

[此贴子已经被作者于2018-8-25 17:07编辑过]


坚守VFP最后的阵地
2018-08-25 17:02
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:20
帖 子:391
专家分:896
注 册:2004-11-23
收藏
得分:0 
还打不开
2018-08-25 17:11
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9798
专家分:26886
注 册:2012-2-5
收藏
得分:0 
我用的是WINRAR软件

坚守VFP最后的阵地
2018-08-25 17:18
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
我把 WinRAR 升级到5.5,就可以解压了

你的表中数据的生成规则为:
N1*10000000+N2*1000000+N3*100000+N4*10000+N5*1000+N6*100+N7*10+N8
如果大于8方有效数据,怎么处理?
没有看出你的限制条件

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-08-25 17:52
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9798
专家分:26886
注 册:2012-2-5
收藏
得分:0 
410000=0*10000000+0*1000000+4*100000+1*10000+0*1000+0*100+0*100+0
411000=0*10000000+0*1000000+4*100000+1*10000+1*1000+0*100+0*100+0

FOR j1=1 TO  8
    IF Array_Code(j1,1)<8 &&此行就是限制条件

坚守VFP最后的阵地
2018-08-25 18:22
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9798
专家分:26886
注 册:2012-2-5
收藏
得分:0 
上面表中的数据只是一组数据,最多的可达到127组数据,全部数据生成新的数据超过100W条记录

[此贴子已经被作者于2018-8-25 18:26编辑过]


坚守VFP最后的阵地
2018-08-25 18:24
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
Use tt
go bott
WAIT WINDOW A.N1*10000000+A.N2*1000000+A.N3*100000+A.N4*10000+A.N5*1000+A.N6*100+A.N7*100+A.N8
大于八位数了
如果:IF Array_Code(j1,1)<8
是什么限制条件?
如何处理?
你的嵌套语句太多
恐怖,,,

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2018-08-25 18:40
快速回复:数据组合问题
数据加载中...
 
   



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

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