砝码分盐问题——从数学和计算机的角度分析(9)
2011-06-21 22:28
381 查看
本博客(http://blog.csdn.net/livelylittlefish
)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!
Content
0.
问题
1.
一些方法
2.
从数学的角度分析
3.
能否编程计算?
4.
一个改进的方法
5.
再改进的方法
6.
能否直接计算求出所有正确解?
7.
一个更为简单的方法
8.
所有代码的自动编译、运行
9.
问题扩展
10.
体会
11.
总结
Reference
附录
1
:数学分解的代码
weight1.c
附录
2
:数学分解程序
weight1
的运行结果
附录
3
:树结构分解的代码
weight2.c
附录
4
:再改进的方法的代码
weight3.1.c/3.2.c/3.3.c
附录
5
:再改进的方法的代码
weight3.1.c/3.2.c/3.3.c
的输出结果
附录
6
:直接计算正确分解的代码
weight4.c
附录
7
:一个更简单的方法的代码
weight5.1.c/5.2.c/5.3.c
9.
问题扩展
面对这样的问题,能否举一反三?能否将其扩展?又如何扩展呢?笔者提供几个思路对其扩展,解决办法,读者可自行编程计算。
(1)
将题目给定的盐的质量及砝码质量
等倍数
增加或减少,达到同样的目标
这个扩展应该是最简单的一种,很好解,只需在程序中将定义的宏,如
total
,
heap1
和
heap2
进行相应的修改即可。
(2)
将题目给定的盐的质量及砝码质量
不等倍数
增加或减少,问有无解?若有解,有几个解?如何得到这些解?
这个扩展稍微复杂一些,质量不等倍数增加或者减少,首先是砝码组合会发生变化,但还可以参考本文给出的各种方法进行编程计算,修改全局数组
ws[]
的内容及相应的称量过程,应该也能解决该问题。
(3)
砝码个数及其质量都发生变化,达到类似的目标,如何解?
砝码组合会发生巨大的变化,求出砝码的组合结果,即本文全局变量
ws[]
数组的内容应该是该扩展的重点,可以考虑数学上的组合问题,也可以参考本文
2.1
砝码组合状态
的方法,通过一个二进制数表示砝码组合情况,共
n(
砝码个数
)
位,其每一位
(0
或者
1)
表示砝码出现或者不出现;但该表示方法不能表示砝码出现在天平的哪一端。为了表示砝码出现在天平的哪一端,可以用一个三进制数表示砝码的组合情况,其每一位
0,1,2(
此
2
表示
-1
,同
2.1
节
)
分别表示不出现,出现在左盘,出现在右盘。该方法也可参考
砝码称重问题
。
这个扩展的编程有些复杂。关于如何生成数的组合或者排列,可参考笔者的另一文章,或者相关资料。
(4)
更改称量次数,仍然达到类似的目标,又如何解?如果同时砝码个数及其质量也发生了变化,又该如何解?
若再加入
1
次或多次的称量过程,若砝码个数变化不大,还可控,若砝码个数及其质量如
(3)
也发生变化,则该扩展会变得非常复杂,编程也会很复杂。但解决思路应该还是这些思路,如果前
3
个扩展都能解决,该扩展也能很好的解决,有兴趣的读者可自行编程计算。
(5) 若将每个过程分解出来的盐也当作砝码?又该如何解?
这个扩展就不再本文的范围内了,本文定位于有确定解的数学和计算机分析。实际上,该确定的解就是通过仅仅是已知砝码组合状态分解问题的解,我们在第2节
和第7节
均有讨论。
那么这个扩展就类似本文第1.1节
和第1.3节
的内容,因此,砝码的组合将出现混合的情况,但本文的思路仍然可以借鉴,有兴趣的读者可自行编程计算。
上一节
下一节
思维题目
, 树型结构
, 砝码分盐
)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!
Content
0.
问题
1.
一些方法
2.
从数学的角度分析
3.
能否编程计算?
4.
一个改进的方法
5.
再改进的方法
6.
能否直接计算求出所有正确解?
7.
一个更为简单的方法
8.
所有代码的自动编译、运行
9.
问题扩展
10.
体会
11.
总结
Reference
附录
1
:数学分解的代码
weight1.c
附录
2
:数学分解程序
weight1
的运行结果
附录
3
:树结构分解的代码
weight2.c
附录
4
:再改进的方法的代码
weight3.1.c/3.2.c/3.3.c
附录
5
:再改进的方法的代码
weight3.1.c/3.2.c/3.3.c
的输出结果
附录
6
:直接计算正确分解的代码
weight4.c
附录
7
:一个更简单的方法的代码
weight5.1.c/5.2.c/5.3.c
9.
问题扩展
面对这样的问题,能否举一反三?能否将其扩展?又如何扩展呢?笔者提供几个思路对其扩展,解决办法,读者可自行编程计算。
(1)
将题目给定的盐的质量及砝码质量
等倍数
增加或减少,达到同样的目标
这个扩展应该是最简单的一种,很好解,只需在程序中将定义的宏,如
total
,
heap1
和
heap2
进行相应的修改即可。
(2)
将题目给定的盐的质量及砝码质量
不等倍数
增加或减少,问有无解?若有解,有几个解?如何得到这些解?
这个扩展稍微复杂一些,质量不等倍数增加或者减少,首先是砝码组合会发生变化,但还可以参考本文给出的各种方法进行编程计算,修改全局数组
ws[]
的内容及相应的称量过程,应该也能解决该问题。
(3)
砝码个数及其质量都发生变化,达到类似的目标,如何解?
砝码组合会发生巨大的变化,求出砝码的组合结果,即本文全局变量
ws[]
数组的内容应该是该扩展的重点,可以考虑数学上的组合问题,也可以参考本文
2.1
砝码组合状态
的方法,通过一个二进制数表示砝码组合情况,共
n(
砝码个数
)
位,其每一位
(0
或者
1)
表示砝码出现或者不出现;但该表示方法不能表示砝码出现在天平的哪一端。为了表示砝码出现在天平的哪一端,可以用一个三进制数表示砝码的组合情况,其每一位
0,1,2(
此
2
表示
-1
,同
2.1
节
)
分别表示不出现,出现在左盘,出现在右盘。该方法也可参考
砝码称重问题
。
这个扩展的编程有些复杂。关于如何生成数的组合或者排列,可参考笔者的另一文章,或者相关资料。
(4)
更改称量次数,仍然达到类似的目标,又如何解?如果同时砝码个数及其质量也发生了变化,又该如何解?
若再加入
1
次或多次的称量过程,若砝码个数变化不大,还可控,若砝码个数及其质量如
(3)
也发生变化,则该扩展会变得非常复杂,编程也会很复杂。但解决思路应该还是这些思路,如果前
3
个扩展都能解决,该扩展也能很好的解决,有兴趣的读者可自行编程计算。
(5) 若将每个过程分解出来的盐也当作砝码?又该如何解?
这个扩展就不再本文的范围内了,本文定位于有确定解的数学和计算机分析。实际上,该确定的解就是通过仅仅是已知砝码组合状态分解问题的解,我们在第2节
和第7节
均有讨论。
那么这个扩展就类似本文第1.1节
和第1.3节
的内容,因此,砝码的组合将出现混合的情况,但本文的思路仍然可以借鉴,有兴趣的读者可自行编程计算。
上一节
下一节
思维题目
, 树型结构
, 砝码分盐
相关文章推荐
- 砝码分盐问题——从数学和计算机的角度分析(11)
- 砝码分盐问题——从数学和计算机的角度分析(3)
- 砝码分盐问题——从数学和计算机的角度分析(4)
- 砝码分盐问题——从数学和计算机的角度分析(5)
- 砝码分盐问题——从数学和计算机的角度分析(1)
- 砝码分盐问题——从数学和计算机的角度分析(6)
- 砝码分盐问题——从数学和计算机的角度分析(2)
- 砝码分盐问题——从数学和计算机的角度分析(7)
- 砝码分盐问题——从数学和计算机的角度分析(8)
- 砝码分盐问题——从数学和计算机的角度分析(10)
- 【扯淡】从数学和计算机学的角度去分析命运
- 【扯淡】从数学和计算机学的角度去分析命运
- 约瑟夫问题的数学角度分析 C 数组实现 循环链表实现 递归实现时间复杂度O(logN)
- [裴礼文数学分析中的典型问题与方法习题参考解答]4.3.14
- [裴礼文数学分析中的典型问题与方法习题参考解答]4.3.26
- [裴礼文数学分析中的典型问题与方法习题参考解答]4.5.8
- 【计算机算法分析】动态规划法——最长公共子序列问题
- 计算机算法设计与分析之棋盘覆盖问题
- [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.24
- 从专业角度,来分析汽车干扰器问题的产生、本质原因与解决方案