| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2071 人关注过本帖
标题:求代码(优),我写的太慢
只看楼主 加入收藏
cdkczyl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-12-27
结帖率:100%
收藏
 问题点数:0 回复次数:9 
求代码(优),我写的太慢
求代码:
1.读取zong.DBF中每一条记录,别到'结果表.DBF'中分别统计出'分数,胜率,胜,和,负,'然后回zong.DBF中 填入'分数,胜率,胜,和,负';填好后形如'回合1.DBF'.我写的代码太慢,求好代码!谢谢!!
2.根据zong.DBF每一条记录的分数,A:计算分数最多的前3种走法;B:按照分数+胜率算出较好的前3种走法!!


祝大家快乐!!
求代码1.rar (498.76 KB)
搜索更多相关主题的帖子: DBF 代码 记录 分数 计算 
2020-01-21 14:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10538
专家分:42927
注 册:2014-5-20
收藏
得分:0 
说说具体算法,有代码就给看看
2020-01-21 15:17
cdkczyl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-12-27
收藏
得分:0 
回复 2楼 吹水佬
上传第一步做法!请帮助看看!
第一步.rar (1.92 KB)
2020-01-21 15:31
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:763
专家分:2503
注 册:2011-5-8
收藏
得分:0 
程序代码:
****************ZYL
SET TALK off
路径=SYS(5)+SYS(2003)
SET PATH TO 路径    &&&&&=SYS(5)+SYS(2003)
set safe off           &&改写文件不提示!
********************************
*第1步:列出44种走法,每步3秒3分钟完成!
***********************************************  
USE 第1步
If Type("第1步.分数")='U' &&一定要带表名,因为如果表字段不存在,但变量或对象却有这个名称,所以要加上表名
alter table 第1步 add  分数 N(6) add 胜率 N(6,2) add  胜 N(6)   add  和 N(6) add  负 N(6) &&编程方式增加字段
***ELSE 多余
ENDIF
**CLOSE ALL
*USE  上面已经关闭所有表了,这没用
** 为什么把表关了又开?
USE 第1步 
blank fields 分数, 胜率, 胜, 和, 负 all
*brow
*RETURN
***************************************************以上是对要操作的表的字段判断是否存在,想要增加的字段,如果有就跳出,把字段清空!! 
*            为什么要关闭?[color=#0000FF]CLOSE DATA[/color]
xx=0   &&胜负结果未知
hongsheng=0   &&红胜
heju=0        &&和棋
heisheng=0    &&黑胜
fenshu=0      &&分数
shenglv=0     &&胜率=

*SELECT 2 
*USE 第1步 
*SELECT 1
USE 结果表 IN 0


SELECT 第1步 &&这样不用记工作区号
GO top
DO WHILE EOF()     && Beginning of loop
*   [color=#0000FF]IF EOF( )多判断[/color]
*      [color=#0000FF]EXIT[/color]

 *  ENDIF

 ss1=LEFT(ALLTRIM(name10),12)
  SELECT  结果表  &&这样不用记工作区号
  COUNT  FOR LEFT(ALLTRIM(name10),12)=ss1.and.RIGHT(ALLTRIM(name9),4)='未知'  TO  xx
  COUNT  FOR LEFT(ALLTRIM(name10),12)=ss1.and.RIGHT(ALLTRIM(name9),4)='红胜'  TO  hongsheng
  COUNT  FOR LEFT(ALLTRIM(name10),12)=ss1.and.RIGHT(ALLTRIM(name9),4)='和棋'  TO  heqi
  COUNT  FOR LEFT(ALLTRIM(name10),12)=ss1.and.RIGHT(ALLTRIM(name9),4)='黑胜'  TO  heisheng  
  
  
  
*!*      ?xx    不要显示这些
*!*      ?hongsheng
*!*      ?heqi
*!*      ?heisheng
*!*      ?'分数:'
*!*      ?'胜率: '
  SELECT 第1步 &&这样不用记工作区号



 REPLACEWITH hongsheng    &&因为是'1回合'所以现在显示的应该是'黑棋' 走这步棋的胜利数!
  REPLACEWITH heisheng   

 REPLACE 分数 WITH  hongsheng*2
   REPLACE 胜率 WITH  hongsheng/(heisheng+hongsheng)*100
  
  
  xx=0   &&胜负结果未知
hongsheng=0   &&红胜
heju=0        &&和棋
heisheng=0    &&黑胜
fenshu=0      &&分数
shenglv=0     &&胜率=
  
  
   SKIP
ENDDO  && End of loop
CLOSE ALL 
retu

dBase有人接盘了。
2020-01-21 16:02
cdkczyl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-12-27
收藏
得分:0 
回复 4楼 xuminxz
代码这样优化,快不了多少!几十万乘几十万数据,计算时间是天文数字,我想有更好的代码,操作'zong.dbf'!如果能优化.写一下代码,感谢!!
2020-01-21 16:13
cdkczyl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-12-27
收藏
得分:0 
回复 4楼 xuminxz
随着步数的增加,算到80步(40个回合),那条件查对困难 能否用数组处理?是否能优化?我想求助!!
2020-01-21 16:21
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:763
专家分:2503
注 册:2011-5-8
收藏
得分:0 
1、不要用中文表名!!输入代码时来回切换输入法太麻烦。
2、说清楚你的程序流程
3、核心问题的算法是什么
4、已有的代码是什么

dBase有人接盘了。
2020-01-21 16:25
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10538
专家分:42927
注 册:2014-5-20
收藏
得分:0 
回复 3楼 cdkczyl
看提供的代码改改主要部分
USE 第1步 IN 0
USE 结果表 IN 0
SELECT 第1步
BLANK FIELDS 分数, 胜率, 胜, 和, 负 ALL
INDEX on LEFT(ALLTRIM(name10),12) TAG tag_name10
SELECT 结果表
SET RELATION TO LEFT(ALLTRIM(name10),12) INTO "第1步"
SCAN
    cName9 = RIGHT(ALLTRIM(name9),4)
    DO case
        CASE cName9 == "红胜"
            REPLACE 第1步.胜 WITH 第1步.胜 + 1
        CASE cName9 == "黑胜"
            REPLACE 第1步.负 WITH 第1步.负 + 1
    ENDCASE
ENDSCAN
SET RELATION TO
SELECT 第1步
REPLACE 分数 WITH 胜*2, 胜率 WITH IIF((胜+负)!=0,胜/(胜+负)*100,0) ALL
SELECT * FROM 第1步
RETURN
2020-01-21 16:27
cdkczyl
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-12-27
收藏
得分:0 
回复 8楼 吹水佬
感谢!!我想用'zong.dbf'的内容,到'结果表.dbf'中去查询,然后填入'zong.dbf'的最后几项数据,由于条件不断变化,快速填最后几项数据有难度,不知能做否.另外能计算出分数最高的走法吗!谢谢!!
2020-01-21 16:45
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10538
专家分:42927
注 册:2014-5-20
收藏
得分:0 
回复 9楼 cdkczyl
说说算法才好写代码,最好有示例代码。
2020-01-21 19:01
快速回复:求代码(优),我写的太慢
数据加载中...
 
   



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

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