>有关整数变换问题,f(i)=3i;g(i)=i/2 (g(i)为i除2下取整)。对于给定的两个整数n,m,用最少的次数将n变换为m,如4=gfgg(15);</P>
> 设初始值为N。</P>% M% h3 @+ p+ q5 U; Q
> 一个数经过一次变换后,可能出现的两个值称为N的子代。如是/2得到,标记为0,如是*3得到,标记为1。</P>+ a6 E# y" z+ W' I' {& I9 V
> N的子代为0,1;</P>
> N的子代的子代为00 01 10 11;</P>
> N的子代的子代的子代为000 001 010 011 100 101 110 111;</P>; v' x$ G2 B7 u$ h& Y# r
> ……</P>3 H/ b2 a: Z* f
> 如果在前面得到的二进制数字前面加上一个数字1,再转代为十进制,那就是从2开始的自然数序列。</P>
> 然后……还有什么难的?编程吧!一个一个地计算,如果只想得到一个解,那在得到第一个等于M的后代后停止。如果想得到所有的最优解,在得到第一个等于M的后代后,设置自然数序列的上限。最后是提取解相对应的二进制数,从最左边的1右边的那个数开始,0代表/2,1代表*3。</P>' M3 A3 }7 M" r, i4 B
> </P>| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |