| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1940 人关注过本帖
标题:[分享]百度武大笔试题
只看楼主 加入收藏
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
回复:(Eastsun)楼主代码没错,但时间复杂度太高了。...
我只想到bfs.你这个先进..

2007-09-20 13:33
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
[CODE]#include <iostream>

using namespace std;


int func(unsigned int x)
{
if(x <= 1) return x;
unsigned int tmp=1;

while(tmp < x)
tmp <<= 1;

int a = func( tmp-x );
int b = func( x-(tmp>>1) );
if(a < b)
return a+1;
else
return b+1;
}

int main()
{
while(1)
{
unsigned int x;
cin >> x;

unsigned int length = sizeof(unsigned int)*8-1;
if( x > ((unsigned)1<<length) )
{
cout << "too big" <<endl;
return 0;
}

if(x <= 1)
{
cout << "step 0" <<endl;
continue;
}

unsigned int tmp=1;
int step=0;
while(tmp < x)
{
tmp <<= 1;
step++;
}
int a = func(tmp - x);
int b = func(x - tmp/2);
if(a < b)
step = step + a;
else
step = step + b - 1;
cout << "step " << step << endl;
}
return 0;
}

[/CODE]


2007-09-20 16:41
易水辰
Rank: 1
等 级:新手上路
威 望:1
帖 子:136
专家分:0
注 册:2007-6-17
收藏
得分:0 
以下是引用無邪的睡脸在2007-9-20 13:15:48的发言:
才学了一个月的C,没考虑那么多。算法大三上学的,全忘了!以前没认真学,现在后悔莫及啊!

呵呵,我刚上完算法,不是没学,而是很难学会啊, 算法,太难了!!!!! 不过你已经很强了,一个月就这水平了,我混混沌沌学C 1年了,什么都不会!!


^_^没事咱就灌水哈^_^!!!
2007-09-20 23:16
快速回复:[分享]百度武大笔试题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015303 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved