标题:数据组合问题
取消只看楼主
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
结帖率:86.67%
已结贴  问题点数:100 回复次数:14 
数据组合问题
数据:
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
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
tt.rar (541 Bytes)

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

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


坚守VFP最后的阵地
2018-08-25 17:02
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
我用的是WINRAR软件

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

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


坚守VFP最后的阵地
2018-08-25 18:24
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
从下一行数据开始

坚守VFP最后的阵地
2018-08-25 18:55
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 


实际上就是笛卡尔积,大于7的数据放弃

坚守VFP最后的阵地
2018-08-25 18:59
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
本意是想获得行列位置的

如上图
N1=0 行列位置应该是 1,1
N2=0 行列位置应该是 1,2
N3=4 行列位置应该是 5,5
N4=1 行列位置应该是 2,4
N5=1 行列位置应该是 2,5
N6=0 行列位置应该是 1,6
N7=0 行列位置应该是 1,7
N8=0 行列位置应该是 1,8

因为还有一个数据也要用到行列位置

坚守VFP最后的阵地
2018-08-25 19:05
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
规则:
1 符合笛卡尔积规则
2 N1-N8中的数据不能大于7
3 生成的数据最多8位,并且首位不能大于7

坚守VFP最后的阵地
2018-08-26 00:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489421-1-1.html




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

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