您的位置:首页 > 职场人生

人搜实习生面试题

2012-05-18 21:49 176 查看
/article/1422719.html

http://topic.csdn.net/u/20120513/20/f6d48eeb-55f5-4d78-8fc0-0dea165c00df.html

4、一条路有k可坑,每次能跳平方数步长(1 4 9 16。。),不能跳到坑里,从a跳到b最少几步?(动态规划题)

动态转移方程

f(n) = min( f(大于n的第一个平方数 -n) ,f(n- 小于n的第一个完全平方数) +1 )

【 补充 ing

在一个坐标轴上, 给定两个点,一个起点,一个终点,起点有一个方块,方块可以左右移动,但是移动的长度只能是平方数长(1,4,9,16 ••••) ,同时坐标轴上还有洞,移动的过程中不能越过这个洞,不然会掉下去,问
由起点到终点 至少需要多少次移动,不能到达返回-1】

C/C++ code
int f(int n)
{
if(n ==1)
return 1;
if(n == 2)
return 2;
int re = (int)sqrt(1.0*n);

if(re*re == n)
return 1;
int l = re ;
int r = re + 1;

return min(f(r*r -n) ,f(n- l*l) ) + 1;

}
int getMinStep(int startPos ,int endPos , int *holePos ,int size)
{

int i ;
for( i = 0 ; i < size ;  i ++)
{
if(  (startPos - holePos[i]) * (endPos - holePos[i])  < 0 )
return -1;
}

int n = abs(endPos - startPos);

printf("%d",f(n));

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: