凤飞飞

d[n]=min(dp[n-1]+1,dp[n/2]); n为偶数

dp[n]=dp[n-1]+1; n为奇数

其实dp[n-1]和dp[n/2]哪个小呢?

我们用二进制表示一个数 
因为此时n为偶数所以,尾为0,我们希望通过减去一能否可以xxxxx数出现更多的0;

1.右移动一位:减少一位,末尾的0去掉

2.减一:xxx0-1,若是xx10的形式,结果为xx01,通过减一,我们没占什么便宜,0,1总数没变。

xxx00减去一,出现xx11,天啊,增加更多的1,算了吧,通过此处我们发现,通过减去一,我们没办法得到更多的0;

所以此题就很简单了,遇到一就减去一,遇到0就右一位,所以总次数就是count(1)X2+count(0)

count(1)就是二进制中1的个数。


#include<iostream>
using namespace std;
int main()
{

cout<<"输入你要求的数"<<endl;
int m;
cin>>m;
int sum=0;
while(m!=1)
{

if(m&1) sum+=2;

//得到最后一位是1,是0

else sum+=1;

m=m>>1;

}
cout<<sum<<endl;
system("pause");

return 0;
}

不用分析,直接动态规划,畅快,但效率。。。


#include<iostream>
using namespace std;
int d[2014];
int min(int x,int y)
{
if(x>y) return y;
else return x;

}

int main()
{
int n;

cin>>n;
memset(d,0,sizeof(d));
d[1]=0;
d[2]=1;

for(int i=3;i<=n;i++)
{
if(i%2==0)
{
d[i]=min(d[i/2],d[i-1])+1;

}
else d[i]=d[i-1]+1;

cout<<d[i]<<endl;

}

system("pause");

return 0;

}

如果改成n为偶数则除以2,为奇数则-1或加1,那最小次数呢,如果是f(7)=4,就是说7到1至少要4次。

偶数的时候,直接右移位,不考虑。

奇数的时候,是加1还是减去1呢?

奇数可以表示为 xxxx1的形式。

1.减去1很简单,xxxx0的形式,

2 xxxx1呢,(a)如果xxx11加上一 就是
xxx00可能比这个还多的0,如果xxx11中11前面还有1的话,总是很爽,     
(b)如果xxx01呢,加上1就是xxxx10,0的个数没变,

2中(a)是最好的,那2中(b)和 1 谁好呢?  
xxxx01加上1,xxx10,xxxx01减去一,变成xxx00,显然1好。

综上所述:

.m&1==0   m=m>>1

否则

m&10判断倒数第二位是1,是0?

为1:则 m=m+1’‘;

为0,则 m=m-1;


#include<iostream>
using namespace std;
int main()
{

cout<<"输入你要求的数"<<endl;
int m;
cin>>m;
int sum=0;
while(m!=1)
{

if(m&1)
{
sum++;
if(m&2)
{
m=m+1;

}
else
{
m=m-1;

}

}

//得到最后一位是1,是0

else
{sum+=1;

m=m>>1;
}

}
cout<<sum<<endl;
system("pause");

return 0;
}

凤飞飞,布布扣,bubuko.com

时间: 2024-11-09 01:17:29

凤飞飞的相关文章

残更容易的凤飞飞的合法的

 http://www.ebay.com/cln/vfj-gbdopwgl/2015-02-26/183087980019 http://www.ebay.com/cln/lybndzon.ynbtwd6/2015-02-26/183362386016 http://www.ebay.com/cln/ranw8582.ysrqtjwso/2015-02-26/183426102011 http://www.ebay.com/cln/hkxtq-rkptamd/2015-02-26/18308

关联映射、关联查询

1 什么叫关联映射 通过数据库对象之间的关联关系(一对一.一对多.多对多),反映到实体对象上之间的引用. 举例 用户实体类(User):user_id user_name user_token 笔记本实体类(Book):book_id user_id book_name 一个笔记本对应一个用户(一对一).一个用户对应多个笔记本(一对多) 案例:根据用户ID去查询用户信息以及该用户所有的笔记信息时就需要用到关联查询,所以就需要用到关联映射 关联查询实体类:user_id user_name use

angular路由

AngularJS 路由允许我们通过不同的 URL 访问不同的内容. AngularJS 模块的 config 函数用于配置路由规则.通过使用 configAPI,我们请求把$routeProvider注入到我们的配置函数并且使用$routeProvider.whenAPI来定义我们的路由规则. $routeProvider 为我们提供了 when(path,object) & otherwise(object) 函数按顺序定义所有路由,函数包含两个参数: 第一个参数是 URL 或者 URL 正

是大法官说

啥地方萨芬安慰 sfefse粉色撒发顺丰嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯方法反反复复凤飞飞反复反复反复反复反复反复反复反复反复反复反复方法反反复复凤飞飞反复反复反复反复反复反复反复反复反复反复反复发反反复复反复复反复反复反复反复反复反复反复反复反复反复发反反复复复反复反复反复反复反复反复反复反复反复反复发反反复复复反复反复反复反复反复反复反复反复反复反复发反反复复复反复反复反复反复反复反复反复反复反复反复发反反复复复反复反复反复反复反复反复反复反复反复反复发反反复复复反复反复反复反复反复反复

多线程间的通讯之等待唤醒机制

线程间的通讯: 事实上就是多个线程在操作同一个资源. 可是操作动作不同 样例: 需求:模拟简单卖票系统(输入一个人.紧接着输出一个人) class Res { String name; String sex; } class Input implements Runnable { private Res r; private int t=0; Input(Res r) { this.r=r; } public void run() { while(true) { if(t==1) { r.nam

02 mybatis环境搭建 【spring + mybatis】

1 导包 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 2 <m

中岛美雪——疑似穿越人物

一.简介 中岛美雪(Miyuki Nakajima),日本女歌手.音乐创作人,广播主持人.作家.演员,1952年2月23日出生于日本北海道札幌市. 1977年9月发行首张冠军单曲<わかれうた>(离别之歌). 1981年发行第二张冠军单曲<恶女>. 1989年开始定期举办自编自导自演舞台剧<夜会>. 1995年四月在香港文化中心举办唯一一次海外演唱会. 2002年末,参加NHK岁末节目--第53届红白歌会,成为当晚收视最高(52.8%)的歌手. 2009年,被日本政府授予