题意
给出一个数n,求n位二进制中有多少个数不包含相邻的1
解题思路
采用插空法
1. 对于n位二进制数,不包含相邻的1时,1的个数必定不大于0的个数。
2. 假设0的个数为a,1的个数为b,(a+b=n,且a>=b)则产生a+1个空位来放置1。
代码
注意:若用long long存储计算结果会WA
#include <stdio.h>
#include <stdlib.h>
double sum,a,b;
int main()
{
int n,t;
int i,j,k,l;
scanf("%d",&t);
for(i=1;i<=t;i++){
scanf("%d",&n);
sum = 1;
l =

该博客主要介绍了如何解决POJ1953问题,即求解n位二进制数中不包含相邻1的数量。通过解析题意,博主提出使用插空法进行解题,指出当0的个数为a,1的个数为b(a+b=n,a>=b)时,存在a+1个空位用于放置1。博客还提及了代码实现时的注意事项,即计算结果需谨慎选择数据类型,否则可能导致错误。
最低0.47元/天 解锁文章
1148

被折叠的 条评论
为什么被折叠?



