| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2947 人关注过本帖, 1 人收藏
标题:请大神帮忙写张表格,就是将总数量为28的两个元素的所有排列与组合都写进表 ...
取消只看楼主 加入收藏
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:30 
请大神帮忙写张表格,就是将总数量为28的两个元素的所有排列与组合都写进表格记录里。
最近想做个K线量化策略测试小工具,无奈水平有限,只好慢慢请教大神们。
需求是将B和P两个元素组成的所有排列与组合写进一张表格记录里面去,B的个数加P的个数总数是28,B的数量可以是0-28个,P的数量也可以是0-28个,即:B个数+P个数=28,B个数=0-28,P个数=0-28,总的组合数是2.68亿多,一张表应该能装下,就是不知道体积有多大。还请大神们帮忙,不胜感激。表格式如下:
序号 BP1 BP2 BP3 BP4 BP5 BP6 BP7 BP8 BP9 BP10 BP11 BP12 BP13 BP14 BP15 BP16 BP17 BP18 BP19 BP20 BP21 BP22 BP23 BP24 BP25 BP26 BP27 BP28
 1    B   B   B   B   B   B   B   B   B   B    B    B    B    B     B    B   B    B    B     B    B    B   B    B    B    B     B    B
 2    B   B   B   B   B   B   B   B   B   B    B    B    B    B     B    B   B    B    B     B    B    B   B    B    B    B     B    P
 3    B   B   B   B   B   B   B   B   B   B    B    B    B    B     B    B   B    B    B     B    B    B   B    B    B    B     P    B
 4    B   B   B   B   B   B   B   B   B   B    B    B    B    B     B    B   B    B    B     B    B    B   B    B    B    P     B    B
 5    B   B   B   B   B   B   B   B   B   B    B    B    B    B     B    B   B    B    B     B    B    B   B    B    p    B     B    B
……
新人求教,还没什么分,抱歉。
搜索更多相关主题的帖子: 不胜感激 记录 元素 
2015-08-27 00:04
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 01:19:46的发言:

如果生成一个字段可能行

多谢版主这么晚了帮忙写代码,2.68亿行,29列文件就过大,那我只能把28这个数改成26,再不行改成24这样一个一个的试了,改成24就只有1677万多行的记录,应该差不多了,如果还不行那可能得换数据库了,再次感谢。
2015-08-27 01:46
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 01:14:21的发言:

VFP9 代码
CREATE CURSOR t1 (a1 c(1))
INSERT INTO t1 VALUES ("B")
INSERT INTO t1 VALUES ("P")
TEXT TO csql NOSHOW
SELECT aa.a1 bp1,bb.a1 bp2,cc.a1 bp3,dd.a1 bp4,ee.a1 bp5,ff.a1 bp6,gg.a1 bp7,hh.a1 bp8,ii.a1 bp9,jj.a1 bp10,kk.a1 bp11,ll.a1 bp12,mm.a1 bp13,nn.a1 bp14,oo.a1 bp15,pp.a1 bp16,qq.a1 bp17,rr.a1 bp18,ss.a1 bp19,tt.a1 bp20,uu.a1 bq21,vv.a1 bp22,ww.a1 bp23,xx.a1 bp24,yy.a1 bp25,zz.a1 bp26,ab.a1 bp27,ac.a1 bp28 FROM t1 aa,t1 bb,t1 cc,t1 dd,t1 ee,t1 ff,t1 gg,t1 hh,t1 ii,t1 jj,t1 kk,t1 ll,t1 mm,t1 nn,t1 oo,t1 pp,t1 qq,t1 rr,t1 ss,t1 tt,t1 uu,t1 vv,t1 ww,t1 xx,t1 yy,t1 zz,t1 ab,t1 ac
ENDTEXT
EXECSCRIPT(csql)
文件太大不能生成

我减少到24个,下面代码应该没错吧?运行后说找不到变量csql
CREATE CURSOR t1 (a1 c(1))
INSERT INTO t1 VALUES ("B")
INSERT INTO t1 VALUES ("P")
TEXT TO csql NOSHOW
SELECT aa.a1 bp1,bb.a1 bp2,cc.a1 bp3,dd.a1 bp4,ee.a1 bp5,ff.a1 bp6,gg.a1 bp7,hh.a1 bp8,ii.a1 bp9,jj.a1 bp10,kk.a1 bp11,ll.a1 bp12,mm.a1 bp13,nn.a1 bp14,oo.a1 bp15,pp.a1 bp16,qq.a1 bp17,rr.a1 bp18,ss.a1 bp19,tt.a1 bp20,uu.a1 bq21,vv.a1 bp22,ww.a1 bp23,xx.a1 bp24 FROM t1 aa,t1 bb,t1 cc,t1 dd,t1 ee,t1 ff,t1 gg,t1 hh,t1 ii,t1 jj,t1 kk,t1 ll,t1 mm,t1 nn,t1 oo,t1 pp,t1 qq,t1 rr,t1 ss,t1 tt,t1 uu,t1 vv,t1 ww,t1 xx
ENDTEXT
EXECSCRIPT(csql)
我是直接放到命令里去点确定的,可能不是这样用?不好意思,我才开始学VFP.见笑了。

[ 本帖最后由 shuxin211 于 2015-8-27 02:04 编辑 ]
2015-08-27 01:52
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 02:22:25的发言:

你用的可能是VFP6,直接用下面代码吧

CREATE CURSOR t1 (a1 c(1))
INSERT INTO t1 VALUES ("B")
INSERT INTO t1 VALUES ("P")
SELECT aa.a1 bp1,bb.a1 bp2,cc.a1 bp3,dd.a1 bp4,ee.a1 bp5,ff.a1 bp6,gg.a1 bp7,hh.a1 bp8,ii.a1 bp9,jj.a1 bp10,kk.a1 bp11,ll.a1 bp12,mm.a1 bp13,nn.a1 bp14,oo.a1 bp15,pp.a1 bp16,qq.a1 bp17,rr.a1 bp18,ss.a1 bp19,tt.a1 bp20,uu.a1 bq21,vv.a1 bp22,ww.a1 bp23,xx.a1 bp24 FROM t1 aa,t1 bb,t1 cc,t1 dd,t1 ee,t1 ff,t1 gg,t1 hh,t1 ii,t1 jj,t1 kk,t1 ll,t1 mm,t1 nn,t1 oo,t1 pp,t1 qq,t1 rr,t1 ss,t1 tt,t1 uu,t1 vv,t1 ww,t1 xx

版主这么晚还不睡啊?我用的是vfp9,是不是要重新建个项目才行呢?先试试再说,早点休息吧,熬夜太晚对身体不好啊。深表感谢。
2015-08-27 02:29
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 02:22:25的发言:

你用的可能是VFP6,直接用下面代码吧

CREATE CURSOR t1 (a1 c(1))
INSERT INTO t1 VALUES ("B")
INSERT INTO t1 VALUES ("P")
SELECT aa.a1 bp1,bb.a1 bp2,cc.a1 bp3,dd.a1 bp4,ee.a1 bp5,ff.a1 bp6,gg.a1 bp7,hh.a1 bp8,ii.a1 bp9,jj.a1 bp10,kk.a1 bp11,ll.a1 bp12,mm.a1 bp13,nn.a1 bp14,oo.a1 bp15,pp.a1 bp16,qq.a1 bp17,rr.a1 bp18,ss.a1 bp19,tt.a1 bp20,uu.a1 bq21,vv.a1 bp22,ww.a1 bp23,xx.a1 bp24 FROM t1 aa,t1 bb,t1 cc,t1 dd,t1 ee,t1 ff,t1 gg,t1 hh,t1 ii,t1 jj,t1 kk,t1 ll,t1 mm,t1 nn,t1 oo,t1 pp,t1 qq,t1 rr,t1 ss,t1 tt,t1 uu,t1 vv,t1 ww,t1 xx


用这个代码貌似可以了,真是大神啊,非常感谢,明天再仔细研究,先睡了,你也早点休息吧。
2015-08-27 02:32
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 02:22:25的发言:

你用的可能是VFP6,直接用下面代码吧

CREATE CURSOR t1 (a1 c(1))
INSERT INTO t1 VALUES ("B")
INSERT INTO t1 VALUES ("P")
SELECT aa.a1 bp1,bb.a1 bp2,cc.a1 bp3,dd.a1 bp4,ee.a1 bp5,ff.a1 bp6,gg.a1 bp7,hh.a1 bp8,ii.a1 bp9,jj.a1 bp10,kk.a1 bp11,ll.a1 bp12,mm.a1 bp13,nn.a1 bp14,oo.a1 bp15,pp.a1 bp16,qq.a1 bp17,rr.a1 bp18,ss.a1 bp19,tt.a1 bp20,uu.a1 bq21,vv.a1 bp22,ww.a1 bp23,xx.a1 bp24 FROM t1 aa,t1 bb,t1 cc,t1 dd,t1 ee,t1 ff,t1 gg,t1 hh,t1 ii,t1 jj,t1 kk,t1 ll,t1 mm,t1 nn,t1 oo,t1 pp,t1 qq,t1 rr,t1 ss,t1 tt,t1 uu,t1 vv,t1 ww,t1 xx

s版主好,刚才用这段代码生成了表格,但是只是一张空表格,并没有自动将排列与组合添加到记录里面去。还请帮忙看看是怎么回事,谢谢。我是想自动生成一楼例举的表格那样子。
2015-08-27 15:45
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用TonyDeng在2015-8-27 10:05:00的发言:

不知道你想干什么。一行就是一个28位的整数,你要全集数据,临时算就可以了,用不着做成文件。

TD版主教训的是,因为我是受Excel数据量的限制才转而投vfp的,所以思维还固化的停留在对单元格的操作上,将28个字段合到一个字段里,应该具有很大的优化效果,我之所以每行做成28个字段,是因为后面的计算要分别用到每个单独的字段,合成一个字段之后那就是对字段的位数进行操作,只是我目前刚开始学,水平太有限,还请多多指点。
2015-08-27 15:55
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 15:52:15的发言:

在VFP6下有结果生成16777216条记录

怎么会这样呢?我用的是VFP9.0的,王苏和任明汉汉化的,唉,菜鸟真心伤不起啊,莫名其妙的到处是问题。
2015-08-27 15:59
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用sdta在2015-8-27 16:00:28的发言:

贴上你的代码

CREATE CURSOR t1 (a1 c(1))
INSERT INTO t1 VALUES ("B")
INSERT INTO t1 VALUES ("P")
SELECT aa.a1 bp1,bb.a1 bp2,cc.a1 bp3,dd.a1 bp4,ee.a1 bp5,ff.a1 bp6,gg.a1 bp7,hh.a1 bp8,ii.a1 bp9,jj.a1 bp10,kk.a1 bp11,ll.a1 bp12,mm.a1 bp13,nn.a1 bp14,oo.a1 bp15,pp.a1 bp16,qq.a1 bp17,rr.a1 bp18,ss.a1 bp19,tt.a1 bp20,uu.a1 bq21,vv.a1 bp22,ww.a1 bp23,xx.a1 bp24 FROM t1 aa,t1 bb,t1 cc,t1 dd,t1 ee,t1 ff,t1 gg,t1 hh,t1 ii,t1 jj,t1 kk,t1 ll,t1 mm,t1 nn,t1 oo,t1 pp,t1 qq,t1 rr,t1 ss,t1 tt,t1 uu,t1 vv,t1 ww,t1 xx
先新建了个表格t1,第一个字段命名a1,后面bp1 bp2……然后直接用的你给的这段代码放进命令框确定,不知道哪里错了。aa bb cc……这些又是什么?需要在新建表格的时候加进去吗?
2015-08-27 16:11
shuxin211
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2015-8-26
收藏
得分:0 
以下是引用吹水佬在2015-8-27 10:38:03的发言:


也就是说,原来的一条记录的内容就可以用一个数值来表示。

多谢吹水版主,你的思路跟TD版主差不多,后面成型的话应该是要这样优化处理才对吧。
2015-08-27 16:15
快速回复:请大神帮忙写张表格,就是将总数量为28的两个元素的所有排列与组合都写 ...
数据加载中...
 
   



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

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