C# 定向计算小工具

C#实现 定向计算小工具

点此下载

程序使用WIN7 64位,VS2015 C#开发:线程的运用,进度时间的估算,排列组合,泛型,递归,算法设计

打开界面:

这里写图片描述

执行过程界面:

这里写图片描述

仅为了验证小时候的一些想法 长大了 当拥有了更强大的工具后 再回过头去看那些曾经的难题 不过都是一些不值一提的小事而已

算法步骤:

1、对输入值提取(正则应用 空格分割)

2、输入值求排列(泛型 主要难点是不能有重复的)
比如:1 1 1 2只有如下组合
[1,1,1,2]
[1,1,2,1]
[1,2,1,1]
[2,1,1,1]

参考:
[1]: 泛型求排列 http://www.cnblogs.com/kissdodog/p/5419981.html
[2]: 去重复 http://blog.csdn.net/brucehb/article/details/9731251
[2]: 去重复 http://blog.csdn.net/cristianojason/article/details/51200078
[3]: 去重复 http://blog.csdn.net/fern_girl/article/details/70339961

3、对使用的2元运算法则求全组合(使用N进制的加法 数组实现)
定义:

运算法则
1加法
2减法
3乘法
4除法
5
6开方

假设选择了 加法 减法 除法 [1,2,4]
步骤1:生成3进制(选择了3个运算法则)数组List 总量为3的(N个运算值-1)次方
[0,0,0]
[0,0,1]
[0,0,2]
[0,1,0]
[0,1,1]
[0,1,2]
[0,2,0]
[0,2,1]
[0,2,2]
[1,0,0]
。。。
[2,2,2]

步骤2:对应提取选择的运算方法
[+,+,+]
[+,+,-]
[+,+,/]
。。。
[/,/,/]

4、对同一组运算方法进行求运算顺序(即加括号)程序不考虑运算满足交换律的情况
比如:a+b+c+d
顺序1:((a+b)+c)+d 对应为:[1,2,3]
顺序2:(a+b)+(c+d) 对应为:[1,3,2]
顺序3:(a+(b+c))+d 对应为:[2,1,3]
。。。

比如:a+b+c+d+e
顺序1:(((a+b)+c)+d)+e 对应为:[1,2,3,4]
顺序2:((a+b)+c)+(d+e) 对应为:[1,2,4,3]
顺序3:((a+b)+(c+d))+e 对应为:[1,3,2,4]
顺序4:((a+b)+c)+(d+e) 对应为:[1,3,4,2]
。。。
其中依然有重复的部分 在最后去重

所以还是一个求排列的方式
最后3层嵌套For循环计算

for 运算数据无重复排序
    for 运算法则全排序
        for 运算顺序排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值