ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

EH搜索     
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 EH云课堂直播课程免费学 打造核心竞争力的职场宝典
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 5730|回复: 16

[原创] ”复杂“的代码,简单的算法→【多过程递归】算24代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-10-23 20:39 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:递归
本帖最后由 香川群子 于 2011-10-23 22:04 编辑

最近正在学习递归用法。

按照间接递归的思路,写了个算24的代码,给大家分享。


同时,给出一组算24难题,基本上是常规算法算不到的。


1,3,4,6
1,4,5,6
1,4,5,6
1,5,5,5
1,6,6,8
2,4,10,10
2,5,5,10
2,5,7,9
2,7,7,10
3,3,7,7
3,3,8,8
3,8,8,10
4,4,7,7
4,4,10,10
4,4,8,9
4,6,6,10
4,6,7,9
5,6,6,9
6,6,6,10
7,8,8,10


递归24.rar

13.19 KB, 下载次数: 215

评分

参与人数 1财富 +50 技术 +1 收起 理由
蓝桥玄霜 + 50 + 1 多过程递归的好教材,值得肯定。

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-23 20:51 | 显示全部楼层
本帖最后由 香川群子 于 2011-10-23 21:07 编辑

下面进入代码过程。


首先,思考算24的实质,就是任取4个数(一般为1-10)【例如取4个数:a1、a2、a3、a4】

通过每次2个数值的加、减、乘、除4种算法中的一个,得到一个【2元素计算结果】
【例如 a1 和 a2 用加法:计算结果=a1+a2】

接着将这个【2元素计算结果】继续以加、减、乘、除4种算法中的一个,
和剩余的2个数中的一个,或者剩余两个数的另一次计算结果,继续计算,得到【3元素计算结果】
【例如对于计算结果(a1+a2)用乘法:(a1+a2)*a3,或(a1+a2)*a4】
或者,也包含直接以a3、a4也同样计算一次,如用减法得到结果【(a3-a4)】

最后,将这个【3元素计算结果】继续以加、减、乘、除4种算法中的一个,
和剩余的最后一个数,继续计算,就最后得到4元素计算结果了
【例如:(a1+a2)*a3-a4,或(a1+a2)*a3/a4等】
或者,也包含第一次计算结果(a1+a2)和第二次计算结果(a3-a4)的计算结果【如(a1+a2)*(a3-a4)】

这样,一般说来,4个元素通过3次计算过程,就可以得到一个最终的,【仅使用加、减、乘、除4种算法的】计算结果。
即:

如果这个最终计算结果正好=24,计算找到了一个解。



…………
实际人脑计算时,大多凭借经验,
无法做遍历计算的。

因为,4个数的排列顺序,就有4*3*2*1=24种,再加上加、减、乘、除的排列,就更多了。

剔除等效计算结果,实际会有2250种不同的计算方法。
(如果4个数中有重复,则计算结果会减少,但即使4个数全部相同,也最少有100多种计算方式,约40种不同的计算结果。)



因此,使用VBA来计算,成为保证搜寻到所有符合条件解的必然。




TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-23 21:27 | 显示全部楼层
本帖最后由 香川群子 于 2011-10-23 21:29 编辑

接下来,用递归的思路:

递归的要求:
1. 每次计算以后,复杂度要降低。
2. 计算过程是可以重复的。即,代入参数不同,但参数类型和计算方法,以及判断标准一致。

用术语来说,就是,具有相同的入口、出口和处理条件。


…………

我是采用正向处理过程来处理的。

但是,思考递归时的思路,则是逆向的。


下面进入正题:

首先,思考计算最终结果的出口,那就是,计算结果=24.

入口呢?
前面已经分析过了,应该是第三步计算过程,即两个计算结果参数,

而处理过程,也很简单,就是【加、减、乘、除】


因此,写出代码如下:

Sub calc2(c(), t1, t2)
……
End Sub

递归子过程命名为【calc2】,即最后两个元素的计算。参数1为数组c()含两个计算对象元素就够了。
……
后来发现,需要输出中间计算结果的文字列,所以后来又增加了t1,t2两个入口参数。
(实际可以用数组储存的方式解决,但考虑到代码可读性,后来就没有改。)


……
下面,举例为加法的处理过程。

s = c(1) + c(2) '计算c(1)和c(2)最后两个元素的加法结果,
    If Round(s, 12) = t Then '如果计算结果=t(即计算最终目标值,算24时当然就会在代码开始时将t赋值为=24)
        k = k + 1 '结果数组序号+1
        d(k) = "=" & t1 & "+" & t2 '在结果数组d中写入计算结果
        e(k) = " =" & t1 & "+" & t2 '在结果数组e中写入计算结果的文字表达式(其实两者内容几乎一样,只差一个空格)
    End If


…………
好了,处理过程就是这么简单。

如果略去输出结果到数组的代码部分,代码可以省略为一行。

即:if 【最终计算结果】=【目标值】 then 【输出结果到数组,结束】



……
然而,考虑到加、减、乘、除四种运算结果的排列,代码显然就【复杂】了。
(实际上,这里的复杂,仅仅是指写的复杂,或代码行数较多,实际上理解非常简单。)

请看实际代码如下:
  1. Sub calc2(c(), t1, t2)
  2.     s = c(1) + c(2)
  3.     If Round(s, 12) = t Then
  4.         k = k + 1
  5.         d(k) = "=" & t1 & "+" & t2
  6.         e(k) = " =" & t1 & "+" & t2
  7.     End If
  8.    
  9.     s = c(1) - c(2)
  10.     If Round(s, 12) = t Then
  11.         k = k + 1
  12.         d(k) = "=" & t1 & "-" & t2
  13.         e(k) = " =" & t1 & "-" & t2
  14.     End If
  15.    
  16.     s = c(2) - c(1)
  17.     If Round(s, 12) = t Then
  18.         k = k + 1
  19.         d(k) = "=" & t2 & "-" & t1
  20.         e(k) = " =" & t2 & "-" & t1
  21.     End If
  22.    
  23.     s = c(1) * c(2)
  24.     If Round(s, 12) = t Then
  25.         k = k + 1
  26.         d(k) = "=" & t1 & "*" & t2
  27.         e(k) = " =" & t1 & "*" & t2
  28.     End If
  29.         
  30.     If c(1) <> 0 Then
  31.         s = c(2) / c(1)
  32.         If Round(s, 12) = t Then
  33.             k = k + 1
  34.             d(k) = "=" & t2 & "/" & t1
  35.             e(k) = " =" & t2 & "/" & t1
  36.         End If
  37.     End If
  38.    
  39.     If c(2) <> 0 Then
  40.         s = c(1) / c(2)
  41.         If Round(s, 12) = t Then
  42.             k = k + 1
  43.             d(k) = "=" & t1 & "/" & t2
  44.             e(k) = " =" & t1 & "/" & t2
  45.         End If
  46.     End If
  47.    
  48. End Sub
复制代码
其中,使用Round函数的目的,在于解决除法精度误差的问题。

如果直接使用=判断,则很多除法结果会因为产生误差而被舍去。

呵呵。


TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-23 21:39 | 显示全部楼层
下面的递归过程,是最终二元素计算的上一层,即三元素计算过程。

Sub calc3(b(), t1, t2, t3)
    ……
End Sub

递归子过程命名为【calc3】,即三个元素的计算。
参数1为数组b()含三个计算对象元素,以及文字结果t1、t2、t3。

思考计算最终结果的出口,就是递归过程【calc2】需要的入口,即两个元素的计算结果。


入口呢?那么就是三个元素b(),以及它们的文字表达式,t1,t2,t3

而处理过程,也很简单,仍然是【加、减、乘、除】
但也需要包含3个元素的所有排列方式。


具体代码如下:
(同样是:代码很【复杂=行数很多】,但是理解很容易,很简单)

  1. Sub calc3(b(), t1, t2, t3)
  2.    
  3.     c(1) = b(1) + b(2)
  4.     c(2) = b(3)
  5.     calc2 c, "(" & t1 & "+" & t2 & ")", t3
  6.    
  7.     c(1) = b(2) + b(3)
  8.     c(2) = b(1)
  9.     calc2 c, "(" & t2 & "+" & t3 & ")", t1
  10.    
  11.     c(1) = b(3) + b(1)
  12.     c(2) = b(2)
  13.     calc2 c, "(" & t3 & "+" & t1 & ")", t2
  14.    
  15.     If b(1) >= b(2) Then
  16.         c(1) = b(1) - b(2)
  17.         c(2) = b(3)
  18.         calc2 c, "(" & t1 & "-" & t2 & ")", t3
  19.     End If
  20.     If b(2) > b(1) Then
  21.         c(1) = b(2) - b(1)
  22.         c(2) = b(3)
  23.         calc2 c, "(" & t2 & "-" & t1 & ")", t3
  24.     End If
  25.    
  26.     If b(2) >= b(3) Then
  27.         c(1) = b(2) - b(3)
  28.         c(2) = b(1)
  29.         calc2 c, "(" & t2 & "-" & t3 & ")", t1
  30.     End If
  31.     If b(3) > b(2) Then
  32.         c(1) = b(3) - b(2)
  33.         c(2) = b(1)
  34.         calc2 c, "(" & t3 & "-" & t2 & ")", t1
  35.     End If
  36.    
  37.     If b(3) >= b(1) Then
  38.         c(1) = b(3) - b(1)
  39.         c(2) = b(2)
  40.         calc2 c, "(" & t3 & "-" & t1 & ")", t2
  41.     End If
  42.     If b(1) > b(3) Then
  43.         c(1) = b(1) - b(3)
  44.         c(2) = b(2)
  45.         calc2 c, "(" & t1 & "-" & t3 & ")", t2
  46.     End If
  47.    
  48.     c(1) = b(1) * b(2)
  49.     c(2) = b(3)
  50.     calc2 c, t1 & "*" & t2, t3
  51.    
  52.     c(1) = b(2) * b(3)
  53.     c(2) = b(1)
  54.     calc2 c, t2 & "*" & t3, t1
  55.    
  56.     c(1) = b(3) * b(1)
  57.     c(2) = b(2)
  58.     calc2 c, t3 & "*" & t1, t2
  59.    
  60.    
  61.     If b(1) <> 0 Then
  62.         c(1) = b(2) / b(1)
  63.         c(2) = b(3)
  64.         calc2 c, "(" & t2 & "/" & t1 & ")", t3
  65.         
  66.         c(1) = b(3) / b(1)
  67.         c(2) = b(2)
  68.         calc2 c, "(" & t3 & "/" & t1 & ")", t2
  69.     End If
  70.    
  71.     If b(2) <> 0 Then
  72.         c(1) = b(1) / b(2)
  73.         c(2) = b(3)
  74.         calc2 c, "(" & t1 & "/" & t2 & ")", t3
  75.         
  76.         c(1) = b(3) / b(2)
  77.         c(2) = b(1)
  78.         calc2 c, "(" & t3 & "/" & t2 & ")", t1
  79.     End If
  80.    
  81.     If b(3) <> 0 Then
  82.         c(1) = b(1) / b(3)
  83.         c(2) = b(2)
  84.         calc2 c, "(" & t1 & "/" & t3 & ")", t2
  85.         
  86.         c(1) = b(2) / b(3)
  87.         c(2) = b(1)
  88.         calc2 c, "(" & t2 & "/" & t3 & ")", t1
  89.     End If
  90. End Sub
复制代码
再次强调,【calc3】递归过程的【出口】,就是调用【calc2】过程代码。

呵呵。

所以,本例的递归计算24方法,本质上是一种【间接递归方式】。


TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-23 21:45 | 显示全部楼层
本帖最后由 香川群子 于 2011-10-23 21:49 编辑

逆向的继续,到了最后的递归过程【calc4】,即4个元素的加、减、乘、除递归计算过程。

Sub calc4(a(), t1, t2, t3, t4)
……
End Sub

递归子过程命名为【calc4】,即四个元素的计算。
参数1为数组a()含四个计算对象元素,以及文字结果t1、t2、t3、t4。

思考计算最终结果的出口,就是递归过程【calc3】需要的入口,即三个元素的计算结果。


入口呢?那么就是四个元素a(),以及它们的文字表达式,t1,t2,t3,t4

而处理过程,也很简单,仍然是【加、减、乘、除】
但也需要包含全部4个元素的所有排列方式。


具体代码如下:
(同样是:代码很【复杂=行数很多】,但是理解很容易,很简单)

  1. Sub calc4(a(), t1, t2, t3, t4)
  2.     b(1) = a(1) + a(2)
  3.     b(2) = a(3)
  4.     b(3) = a(4)
  5.     calc3 b, "(" & t1 & "+" & t2 & ")", t3, t4
  6.    
  7.     b(1) = a(1) + a(3)
  8.     b(2) = a(2)
  9.     b(3) = a(4)
  10.     calc3 b, "(" & t1 & "+" & t3 & ")", t2, t4
  11.    
  12.     b(1) = a(1) + a(4)
  13.     b(2) = a(2)
  14.     b(3) = a(3)
  15.     calc3 b, "(" & t1 & "+" & t4 & ")", t2, t3
  16.    
  17.     b(1) = a(2) + a(3)
  18.     b(2) = a(1)
  19.     b(3) = a(4)
  20.     calc3 b, "(" & t2 & "+" & t3 & ")", t1, t4
  21.    
  22.     b(1) = a(2) + a(4)
  23.     b(2) = a(1)
  24.     b(3) = a(3)
  25.     calc3 b, "(" & t2 & "+" & t4 & ")", t1, t3
  26.    
  27.     b(1) = a(3) + a(4)
  28.     b(2) = a(1)
  29.     b(3) = a(2)
  30.     calc3 b, "(" & t3 & "+" & t4 & ")", t1, t2
  31.     '以上各种加法计算
  32.    
  33.     If a(1) >= a(2) Then
  34.         b(1) = a(1) - a(2)
  35.         b(2) = a(3)
  36.         b(3) = a(4)
  37.         calc3 b, "(" & t1 & "-" & t2 & ")", t3, t4
  38.     End If
  39.     If a(2) > a(1) Then
  40.         b(1) = a(2) - a(1)
  41.         b(2) = a(3)
  42.         b(3) = a(4)
  43.         calc3 b, "(" & t2 & "-" & t1 & ")", t3, t4
  44.     End If
  45.    
  46.     If a(1) >= a(3) Then
  47.         b(1) = a(1) - a(3)
  48.         b(2) = a(2)
  49.         b(3) = a(4)
  50.         calc3 b, "(" & t1 & "-" & t3 & ")", t2, t4
  51.     End If
  52.     If a(3) > a(1) Then
  53.         b(1) = a(3) - a(1)
  54.         b(2) = a(2)
  55.         b(3) = a(4)
  56.         calc3 b, "(" & t3 & "-" & t1 & ")", t2, t4
  57.     End If
  58.    
  59.     If a(1) >= a(4) Then
  60.         b(1) = a(1) - a(4)
  61.         b(2) = a(2)
  62.         b(3) = a(3)
  63.         calc3 b, "(" & t1 & "-" & t4 & ")", t2, t3
  64.     End If
  65.     If a(4) > a(1) Then
  66.         b(1) = a(4) - a(1)
  67.         b(2) = a(2)
  68.         b(3) = a(3)
  69.         calc3 b, "(" & t4 & "-" & t1 & ")", t2, t3
  70.     End If
  71.    
  72.     If a(2) >= a(3) Then
  73.         b(1) = a(2) - a(3)
  74.         b(2) = a(1)
  75.         b(3) = a(4)
  76.         calc3 b, "(" & t2 & "-" & t3 & ")", t1, t4
  77.     End If
  78.     If a(3) > a(2) Then
  79.         b(1) = a(3) - a(2)
  80.         b(2) = a(1)
  81.         b(3) = a(4)
  82.         calc3 b, "(" & t3 & "-" & t2 & ")", t1, t4
  83.     End If
  84.    
  85.     If a(2) >= a(4) Then
  86.         b(1) = a(2) - a(4)
  87.         b(2) = a(1)
  88.         b(3) = a(3)
  89.         calc3 b, "(" & t2 & "-" & t4 & ")", t1, t3
  90.     End If
  91.     If a(4) > a(2) Then
  92.         b(1) = a(4) - a(2)
  93.         b(2) = a(1)
  94.         b(3) = a(3)
  95.         calc3 b, "(" & t4 & "-" & t2 & ")", t1, t3
  96.     End If
  97.    
  98.     If a(3) >= a(4) Then
  99.         b(1) = a(3) - a(4)
  100.         b(2) = a(1)
  101.         b(3) = a(2)
  102.         calc3 b, "(" & t3 & "-" & t4 & ")", t1, t2
  103.     End If
  104.     If a(4) > a(3) Then
  105.         b(1) = a(4) - a(3)
  106.         b(2) = a(1)
  107.         b(3) = a(2)
  108.         calc3 b, "(" & t4 & "-" & t3 & ")", t1, t2
  109.     End If
  110.     '以上各种减法计算
  111.    
  112.     b(1) = a(1) * a(2)
  113.     b(2) = a(3)
  114.     b(3) = a(4)
  115.     calc3 b, "(" & t1 & "*" & t2 & ")", t3, t4
  116.    
  117.     b(1) = a(1) * a(3)
  118.     b(2) = a(2)
  119.     b(3) = a(4)
  120.     calc3 b, "(" & t1 & "*" & t3 & ")", t2, t4
  121.    
  122.     b(1) = a(1) * a(4)
  123.     b(2) = a(2)
  124.     b(3) = a(3)
  125.     calc3 b, "(" & t1 & "*" & t4 & ")", t2, t3
  126.    
  127.     b(1) = a(2) * a(3)
  128.     b(2) = a(1)
  129.     b(3) = a(4)
  130.     calc3 b, "(" & t2 & "*" & t3 & ")", t1, t4
  131.    
  132.     b(1) = a(2) * a(4)
  133.     b(2) = a(1)
  134.     b(3) = a(3)
  135.     calc3 b, "(" & t2 & "*" & t4 & ")", t1, t3
  136.    
  137.     b(1) = a(3) * a(4)
  138.     b(2) = a(1)
  139.     b(3) = a(2)
  140.     calc3 b, "(" & t3 & "*" & t4 & ")", t1, t2
  141.     '以上各种乘法计算
  142.    
  143.     b(1) = a(1) / a(2)
  144.     b(2) = a(3)
  145.     b(3) = a(4)
  146.     calc3 b, "(" & t1 & "/" & t2 & ")", t3, t4
  147.    
  148.     b(1) = a(2) / a(1)
  149.     b(2) = a(3)
  150.     b(3) = a(4)
  151.     calc3 b, "(" & t2 & "/" & t1 & ")", t3, t4
  152.    
  153.     b(1) = a(1) / a(3)
  154.     b(2) = a(2)
  155.     b(3) = a(4)
  156.     calc3 b, "(" & t1 & "/" & t3 & ")", t2, t4
  157.    
  158.     b(1) = a(3) / a(1)
  159.     b(2) = a(2)
  160.     b(3) = a(4)
  161.     calc3 b, "(" & t3 & "/" & t1 & ")", t2, t4
  162.    
  163.     b(1) = a(1) / a(4)
  164.     b(2) = a(2)
  165.     b(3) = a(3)
  166.     calc3 b, "(" & t1 & "/" & t4 & ")", t2, t3
  167.    
  168.     b(1) = a(4) / a(1)
  169.     b(2) = a(2)
  170.     b(3) = a(3)
  171.     calc3 b, "(" & t4 & "/" & t1 & ")", t2, t3
  172.    
  173.     b(1) = a(2) / a(3)
  174.     b(2) = a(1)
  175.     b(3) = a(4)
  176.     calc3 b, "(" & t2 & "/" & t3 & ")", t1, t4
  177.    
  178.     b(1) = a(3) / a(2)
  179.     b(2) = a(1)
  180.     b(3) = a(4)
  181.     calc3 b, "(" & t3 & "/" & t2 & ")", t1, t4
  182.    
  183.     b(1) = a(2) / a(4)
  184.     b(2) = a(1)
  185.     b(3) = a(3)
  186.     calc3 b, "(" & t2 & "/" & t4 & ")", t1, t3
  187.    
  188.     b(1) = a(4) / a(2)
  189.     b(2) = a(1)
  190.     b(3) = a(3)
  191.     calc3 b, "(" & t4 & "/" & t2 & ")", t1, t3
  192.    
  193.     b(1) = a(3) / a(4)
  194.     b(2) = a(1)
  195.     b(3) = a(2)
  196.     calc3 b, "(" & t3 & "/" & t4 & ")", t1, t2
  197.    
  198.     b(1) = a(4) / a(3)
  199.     b(2) = a(1)
  200.     b(3) = a(2)
  201.     calc3 b, "(" & t4 & "/" & t3 & ")", t1, t2
  202.     '以上各种除法计算
  203.    
  204. End Sub
复制代码
呵呵,代码真的很【复杂】,但同时其含义和作用,又是简单到不能再简单。




最后强调,【calc4】递归过程的【出口】,就是调用【calc3】过程代码。
而接下来,【calc3】过程,将会调用【calc2】过程,直至得到最终结果。
呵呵。

所以,本例的递归计算24方法,是一种【多过程间接递归方式】。

过程总代码 →【calc4】递归→→【calc3】递归→【calc2】递归


每个【calc】递归计算过程,都会把复杂度降低一级,直至最终结果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-23 21:57 | 显示全部楼层
最后,就是全过程的输入输出及打包、调试运行了。
最终代码如下:

  1. Public a(4), b(3), c(2), d() As String, e() As String, k$, t#
  2. '以上为声明公共变量
  3. Sub my24()
  4.     For i = 1 To 4
  5.         a(i) = Cells(i, 1) '从工作表的a1、a2、a3、a4单元格中获取四个元素
  6.     Next
  7.     t = [b1] '获取目标值。 当前工作表为=24,但实际上你可以修改为任意数值如=20来运行
  8.    
  9.     ReDim d(1 To 65536) '定义获取计算结果的数组d
  10.     ReDim e(1 To 65536) '定义获取计算结果文字表达式结果的数组e
  11.    
  12.     k = 0 '结果计数器归零
  13.     calc4 a, a(1), a(2), a(3), a(4) '调用【calc4】递归过程后,自动递归计算并得到所有结果
  14.    
  15.     [d1].CurrentRegion.Clear '清除输出结果区域
  16.     If k > 0 Then
  17.         [d1] = Join(a) & " Has " & k & " Answers !" '显示有解k个
  18.         [d2].Resize(k) = WorksheetFunction.Transpose(d) '输出计算结果
  19.         [e2].Resize(k) = WorksheetFunction.Transpose(e) '输出文字列表达式
  20.     Else
  21.         [d1] = Join(a) & " No Answer !" '显示无解
  22.     End If
  23. End Sub
复制代码
总之,是很简单的递归思路,
但是由于把加、减、乘、除,以及排列等因素一并考虑进去了,
所以代码的行数相当地多,多到让人看了感到很复杂的程度。
但是实际上都是相似结构代码的排列重复而已。



TA的精华主题

TA的得分主题

 楼主| 发表于 2011-10-23 22:02 | 显示全部楼层
有人把排列等因素也用代码算法简化了,大大地减少了代码行数,
但是,实际上就代码本身而言,代码行数少了,但代码真正的复杂程度是大大提高了。


并且,有些人写的算24代码,是一次性递归过程,(但在这个递归过程中用了很多条件判断和反复调用过程)



…………

总之,我今天这样写出一个【多过程递归计算24】的代码,

不是为了什么明确的目的,仅仅是为了便于广大初学者,

可以毫无压力地看懂,并今后能够敢于自己编写递归代码。


呵呵。

如果初学者因此而增加了一些信心,那就是我的荣幸。


…………
也请高手发表意见,也算是抛砖引玉了。


呵呵。

TA的精华主题

TA的得分主题

发表于 2011-10-24 00:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-1-16 21:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-1-28 04:38 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

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

GMT+8, 2019-11-22 13:36 , Processed in 0.110111 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2020 Wooffice Inc.

   

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

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

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