SHAOXIAOJ正在加载中...

2641: 回溯法-放烟花问题

金币值:3 定数:10 时间限制:10.000 s 内存限制:128 M
正确:2 提交:2 正确率:100.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 算法设计

题目描述

现有n个炮筒可以独自放烟花,如果因为某种原因造成相邻的两个炮筒不能同时放烟花,则有多少种不同的放烟花方案数目。

测试代码   复制

#include "stdio.h" 

double count = 0; 
int x[41];
int n;

void Backtrack(int i) 
{ 

} 

int main(void) 
{ 
      scanf("%d",&n);
      Backtrack(1); 
      printf("%.0lf", count); 
      return 0;
}

输入格式

第1行输入1个正整数n的值(n<=40)

输出格式

不同的放烟花方案数目

输入样例    复制

3

输出样例    复制

5

提示

可以用回溯法或分枝限界法实现。上面的样例中如果没有两个炮筒不能同时放烟花的约束,则有8种情况;如果有了前面所说的限制条件,则110(前两个炮筒不能同时放烟花)、011(后两个炮筒不能同时放烟花)、111(三个炮筒不能同时放烟花)三种方案不可行。