头条春招第二题

能用第一种就用第一种,不能用就用第二种,就A了这一道,各位大佬都AC了几道呢,瑟瑟发抖
#include<iostream>
using namespace std;

int main() {
int n;
cin >> n;
int s=1,m=1,cnt=0;
while (s<n)
{
if (2 * s == n || (2 * s < n &&n% s == 0)) {
m = s;
s = 2 * s;
}
else {
s += m;
}
++cnt;
}
cout << cnt;
return 0;
}

#笔试题目##春招#
全部评论
int n; int dfs(int m,int s){     if(s>n)         return n;     if(s==n)         return 0;     int s1=dfs(s,s+s)+1;     int s2=dfs(m,s+m)+1;     return min(s1,s2); } int main(){     cin>>n;     cout<<dfs(1,1)<<endl; }  感觉DFS更简单
点赞 回复 分享
发布于 2018-03-24 21:26
看了,要吐,那个条件我写了2*s==n或n>3n,然后找例子的时候感觉有时候4倍,有时候嗯。。就以为方法不对,各种想动态规划去了,大哥那条件总结得好啊
点赞 回复 分享
发布于 2018-03-24 21:28
楼主这题思路是什么可以分享下吗
点赞 回复 分享
发布于 2018-03-24 21:22

相关推荐

阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务