ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: On_fire

[求助] 恳请! 算法高手…出手帮忙解难题…

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-24 09:53 | 显示全部楼层
Nhand 发表于 2018-1-24 09:36
这个问题跟我不太相关,因为俺不是个程序猿,所以具体的代码就不去写了,一是没有数据,二是debug很麻烦~~~ ...

谢谢老师提供思路...

TA的精华主题

TA的得分主题

发表于 2018-1-24 10:06 | 显示全部楼层
本帖最后由 Nhand 于 2018-1-24 10:13 编辑
Nhand 发表于 2018-1-24 09:44
进一步的,因为 1+2  1+3+5 2+5  5+9 因为每个key的第一个数字到最后一个数字都是从小到大的。那么问题就 ...

在进一步的,我大概模拟了一下,将每个key的第一个数字加入相应数据段的时候,势必会存在 比如5行的数据段,存放了6 行 6行这种情况,可以再将item做一次去重
所以整个流程的运算次数是最多300 万*(3到4次)。预计时间几分钟,或者几十秒,因为个人做过先将10万数据存入字典,然后遍历6万数据,再次修改下时间,哈哈,算错了,我10万数据存入字典,是10万次,遍历6万数据,是6万次,总共16万次,大约10-20秒 。。。你这个数据运算下来时间还是需要比较长,当然也跟数据内容本身有关

TA的精华主题

TA的得分主题

发表于 2018-1-24 10:11 | 显示全部楼层
On_fire 发表于 2018-1-24 09:53
谢谢老师提供思路...

第一,不是老师。
第二。我在脑海里大概模拟了一下,应该是可行的,而且速度应该不差。只不过正如我说的,一是这个代码势必很长,二是代码长了debug会很麻烦,所以仅提供思路
第三。无论我代码是否可行,对于你的题目我说下个人看法。你要做什么就做什么,你的题目最终我是看懂了,也明白你要做什么,但是要做什么就做什么,不要将目的写成难点、挑战,这是影响别人判断。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-24 10:12 | 显示全部楼层
Nhand 发表于 2018-1-24 10:06
在进一步的,我大概模拟了一下,将每个key的第一个数字加入相应数据段的时候,势必会存在 比如5行的数据 ...

再次谢谢老师,

知道了, 论坛上, 果然是卧虎藏龙…

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-24 10:19 | 显示全部楼层
本帖最后由 On_fire 于 2018-1-24 12:06 编辑
Nhand 发表于 2018-1-24 10:11
第一,不是老师。
第二。我在脑海里大概模拟了一下,应该是可行的,而且速度应该不差。只不过正如我说的 ...

明白你的意思...

标题可能有点夸张…但我确实不懂, 也不会...

我也在6楼说一说我以前的一次经历…
会算法的高手, 代码的指令周期, 是不可以想象的..

因为一个代码要等2.5小时, 另一个是5分钟内搞定...
, 也要看源数据有多少


TA的精华主题

TA的得分主题

发表于 2018-1-24 10:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
On_fire 发表于 2018-1-24 10:19
明白你的意思...

标题可能有点夸张…但我确实不懂, 也不会...

第二步将 item设置成新字典可以省略,采用for each t in d.items 遍历item 然后用split (0)取item的+号前最小数字加入相应数据段。。。。你测试下吧 这个代码肯定很长,我顺便验证下思路。。。

TA的精华主题

TA的得分主题

发表于 2018-1-24 13:20 | 显示全部楼层
本帖最后由 从入门到入土 于 2018-1-24 14:20 编辑

很好奇楼主一定要输出成这样吗?如果按这个输出最后会得到非常多的数据,不但占用很多时间而且很不便于后期的利用

TA的精华主题

TA的得分主题

发表于 2018-1-24 14:27 | 显示全部楼层
On_fire 发表于 2018-1-24 10:19
明白你的意思...

标题可能有点夸张…但我确实不懂, 也不会...

3万多行7列的数据,
光计算不输出,大约23秒

输出为txt文件,则需要大约300秒 5分钟左右。

TA的精华主题

TA的得分主题

发表于 2018-1-24 14:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 香川群子 于 2018-1-24 14:35 编辑

最后一行匹配以后的输出结果:
36832 7_7 |14*12*12*@3|9.4*9.1*9.2*@4|2641|54&133&1084|5@田&4&06|3.3S2445|13.60  14.4   22.6   23.2   21.544|

26549 1_7 |5.6*8.6*8.7*@1|9.3*9.4*11@5|1565|39&132&1076|5@田&4&06|2.8B3512|13.20  13.3   20.6   22.475|
27263 1_7 |6.2*7*6.1*@3|10.3*8.9*10@4|1460|0&125&1108|5@田&4&06|3B3623|13.90  14.7   23.2   24.2   23.9   22.479|
27751 1_7 |24.7*28*25*@3|13.2*10.5*12@6|1590|66&117&1099|5@田&4&06|3.3C3202|13.20  13.7   20.4   22.482|
28780 1_7 |7*17.4*12*@2|8.4*8.9*11@6|2009|76&127&1152|5@田&4&06|3E2434|13.70  13.7   22.3   22.8   23.485|
29415 1_7 |6.8*5.2*6.1*@2|8.9*10.7*12@6|1626|116&126&1146|5@田&4&06|9E0864|13.20  13.4   20.5   22.494|
30389 1_7 |5.9*5.7*6.2*@3|13.2*14.2*14@6|1566|93&131&1029|5@田&4&06|2.3D0072|13.70  13.8   21.4   22.6|
30660 1_7 |18.9*24.2*19*@1|10.9*15.8*16@4|1226|0&125&1041|5@田&4&06|2.5V0284|13.70  13.9   22.4   22.8   23.496|
30824 1_7 |5.2*5*5.4*@3|10.2*8.9*11@6|1831|52&123&1269|5@田&4&06|2.5D2643|13.60  13.6   22.2   23.5   22.504|
31642 1_7 |3.9*3.1*2.7*@1|21*35*50@6|648|122&126&1087|5@田&4&06|2.8B3983|28.00  28.7   23.8   25.4   23.508|
31870 1_7 |10*12*12*@1|15*26*21@5|1745|46&119&1139|5@田&4&06|5.8A0065|13.40  14.1   21.9   23.3   22.511|
32713 1_7 |6.8*3.3*4*@3|6.2*4*5@6|5439|59&135&1066|5@田&4&06|5.3A2283|13.90  14.0   23.0   24.0   24.2   23.514|
33369 1_7 |5.7*3.6*3.7*@2|5.3*6.7*6.3@5|2641|104&129&1018|4@田&5&07|4.8T1714|13.70  13.7   21.7   22.8   23.523|
36463 1_7 |4.8*6.1*6.3*@3|6.5*7*7.1@5|5280|30&129&984|7@谷&9&0F|2T0815|13.60  14.4   22.6   23.2   21.544|
36527 1_7 |9*7.3*8*@1|10*5.9*6.1@6|5670|68&113&1147|5@田&4&06|1.5A0423|29.00  29.8   25.0   23.8   22.535|
36586 1_7 |5*6.7*5.6*@3|24*22*25@5|1260|52&127&1199|6@谷&1&02|3V2344|13.60  14.4   22.6   23.2   21.544|
00004 1_7 |1.5*1.9*1.6*@1|7.3*6.6*3.8@4|13542|54&133&1084|4@田&9&12|2.8B1018|24.51  25.51  22.81  23.34  23.03|
02503 1_7 |9.8*9.8*8.8*@2|12*9.7*13@4|2833|59&133&1026|5@田&4&06|2V03810|24.17  25.65  22.73  23.41  23.65|
05687 1_7 |2.2*2.2*1.8*@2|13*13*14@4|2926|107&115&1086|5@田&4&06|2.3S29012|25.44  26.32  23.65  23.86  23.11|
06058 1_7 |11*16*22*@3|9.7*10*14@4|2680|30&125&1064|5@田&4&06|1.3S0789|27.69  28.37  23.19  23.99  23.19|
09703 1_7 |9.3*8.7*3.5*@1|8.6*10*15@4|2641|52&126&1063|3@田&9&27|1S1096|13.53  14.29  22.17  22.97  23.26|
13532 1_7 |22*17*24*@3|12*11*13@6|2001|78&126&1018|5@田&4&06|1.8L1467|13.70  13.8   21.4   22.6|
17223 1_7 |45*47*52*@3|12*11*12@5|2641|43&117&1110|6@田&8&56|3.5J3375|13.40  13.6   21.5   23.7   23.236|
17755 1_7 |15*12*11*@1|15*18*9.2@4|2641|87&125&945|6@谷&3&86|0.8J0982|13.60  14.4   22.6   23.2   21.260|
18769 1_7 |6.9*5.5*3.4*@1|8.9*10*12@6|1944|39&133&1092|5@田&4&06|5.3K04611|23.50  23.8   22.8   24.284|
20532 1_7 |6.6*5.4*3.8*@3|10*14*23@4|1362|61&129&1186|9@谷&7&10F|0.5D0520|13.60  14.4   22.6   23.2   21.544|
20919 1_7 |14*12*12*@3|18*25*20@4|1344|107&129&1103|4@田&3&57|2J2251|13.70  13.7   21.7   22.8   23.548|
23114 1_7 |7.8*8.2*6.9*@2|9.7*9.1*12@5|2531|52&121&1174|5@田&4&06|4.3G2905|13.20  13.7   20.4   22.384|
24695 1_7 |14*12*12*@3|18*17*14@4|1282|69&124&1134|6@谷&2&0D|1.8E3324|13.20  13.7   20.4   22.435|
25363 1_7 |17.3*18.9*17*@2|9.4*10.9*10@6|1729|52&122&1165|5@田&4&06|1.3C3203|23.50  23.8   22.8   24.451|
25561 1_7 |4.8*4*4.4*@2|10.3*11*12@5|1760|44&119&1066|5@田&4&06|6.8D3674|29.00  29.8   25.0   23.8   22.459|
36709 1_7 |6*4.8*4.8*@3|6.8*5.3*5.6@5|4780|41&120&998|6@谷&3&05|4.8V3314|13.60  14.4   22.6   23.2   21.544|


格式为:行序号 匹配个数_行个数 行元素,行元素之间以【|】符号分隔

TA的精华主题

TA的得分主题

发表于 2018-1-24 17:09 | 显示全部楼层
输出格式改一下,增加了匹配内容:
格式依次为:
行序号,匹配个数_行个数 |匹配内容|=|合并内容|

00829 7_7 |5.2*5.2*3.5*@1|12*9.9*15@4|4008|46&119&1073|7@谷&6&06|2.5S2609|27.33  29.13  23.50  23.84  23.65|

05707 2_7|4008|7@谷&6&06| = |2.1*3.6*3.9*@1|6.4*7.6*10@6|4008|43&118&1160|7@谷&6&06|3N01211|23.91  25.19  23.89  22.27|
32900 1_7|7@谷&6&06| = |11*11*6.1*@1|21*18*20@4|915|129&129&1132|7@谷&6&06|8.8S2024|13.90  14.7   23.2   24.2   23.9   22.518|
27281 1_7|7@谷&6&06| = |17.5*37.7*30*@3|14.2*9.2*8.9@4|3398|50&121&1059|7@谷&6&06|2E0134|13.40  14.1   21.9   23.3   22.482|
26977 1_7|4008| = |14.4*14.9*14*@3|6.5*7.2*6.2@5|4008|54&126&1040|4@谷&5&03|4.8E1805|29.00  29.4   25.0   23.8   22.474|
24812 1_7|4008| = |8.8*9.7*6.3*@3|5.1*4.4*5.2@4|4008|80&133&1022|5@田&2&03|3E2854|13.60  13.6   22.2   23.5   22.441|
24542 1_7|7@谷&6&06| = |7.1*8.6*9*@3|6.9*9.8*9@6|2334|34&127&1040|7@谷&6&06|3.8C1943|13.90  14.3   23.1   24.2   24.0   23.425|
24284 1_7|7@谷&6&06| = |4.7*2.8*3.1*@3|11*9.7*11@4|3061|69&121&1111|7@谷&6&06|2.3G1794|13.40  14.1   21.9   23.3   22.425|
20794 1_7|4008| = |6.2*6*7.8*@1|4.5*6.9*6@4|4008|0&127&1159|4@田&5&72|3J2190|28.00  28.7   23.8   25.4   23.545|
20193 1_7|46&119&1073| = |10*10*10*@2|25*18*29@5|929|46&119&1073|5@田&9&2D|3.3J0428|23.50  23.9   22.3   24.331|
18209 1_7|4008| = |7.8*10*12*@1|9.2*11*7.2@5|4008|47&120&1037|5@谷&7&55|1.8K1363|23.50  23.9   22.3   24.267|
17277 1_7|46&119&1073| = |6.8*7.7*6.5*@3|14*13*5.4@5|5430|46&119&1073|5@田&10&12|1.5J13711|13.70  13.7   22.3   22.8   23.239|
14011 1_7|7@谷&6&06| = |9.1*8.5*7.9*@2|8.9*10*11@5|4096|59&133&1177|7@谷&6&06|1.8H2846|13.90  14.3   23.1   24.2   24.0   23.131|
11347 1_7|4008| = |20*31*23*@1|12*9.2*9.9@5|4008|52&125&1028|5@田&9&1G|1.5L28410|13.90  14.5   23.1   24.2   24.0   22.53|
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 12:46 , Processed in 0.039350 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表