candid 发表于 2004-11-28 20:57

帮看看这个问题,给个算法思路吧

<P>有关整数变换问题,f(i)=3i;g(i)=i/2 (g(i)为i除2下取整)。对于给定的两个整数n,m,用最少的次数将n变换为m,如4=gfgg(15);</P>

布赖 发表于 2004-12-18 00:34

首先,n一定可变为m?

fewrains 发表于 2006-1-3 01:08

<P>    设初始值为N。</P>
<P>    一个数经过一次变换后,可能出现的两个值称为N的子代。如是/2得到,标记为0,如是*3得到,标记为1。</P>
<P>    N的子代为0,1;</P>
<P>    N的子代的子代为00 01 10 11;</P>
<P>    N的子代的子代的子代为000 001 010 011 100 101 110 111;</P>
<P>    ……</P>
<P>    如果在前面得到的二进制数字前面加上一个数字1,再转代为十进制,那就是从2开始的自然数序列。</P>
<P>    然后……还有什么难的?编程吧!一个一个地计算,如果只想得到一个解,那在得到第一个等于M的后代后停止。如果想得到所有的最优解,在得到第一个等于M的后代后,设置自然数序列的上限。最后是提取解相对应的二进制数,从最左边的1右边的那个数开始,0代表/2,1代表*3。</P>
<P>    </P>

kmpop2000 发表于 2006-11-26 16:43

chj1983wd 发表于 2006-11-29 16:08

晕,没看懂二当家说的...好好消化下<div id="dictdiv" style="margin: 5px; background: yellow none repeat scroll 0%; position: absolute; left: 0pt; top: 0pt; z-index: 1000; font-family: arial; font-size: 13px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px; opacity: 0.9; display: none;"></div><div id="dictaudio"></div>

chj1983wd 发表于 2006-11-29 16:11

gfgg 确实是4哦... 为什么! 明明是*3. 是不是gf 无论怎样都可以?<br/><div id="dictdiv" style="margin: 5px; background: yellow none repeat scroll 0%; position: absolute; left: 0pt; top: 0pt; z-index: 1000; font-family: arial; font-size: 13px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px; opacity: 0.9; display: none;"></div><div id="dictaudio"></div>

chj1983wd 发表于 2006-11-29 16:33

是不是我理解错了. g( 15 ) = 7.对应二进制是 111. 而操作对应的是 0 . 怎么也不等啊~ ,望达人 KT 一下. <br/><div id="dictdiv" style="margin: 5px; background: yellow none repeat scroll 0%; position: absolute; left: 0pt; top: 0pt; z-index: 1000; font-family: arial; font-size: 13px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; -moz-border-radius-bottomright: 5px; -moz-border-radius-bottomleft: 5px; opacity: 0.9; display: none;"></div><div id="dictaudio"></div>
页: [1]
查看完整版本: 帮看看这个问题,给个算法思路吧