题目描述
我们来玩一个游戏:自然数1到N,按顺序列成一排,你可以从中取走任意个数,但是间隔一个的不能同时被取走,如果1表示取走,0表示不取走,则不能出现101的连续串。
如果你能算出一共有多少种取法,那么你会被天神小泰泰奖励。
输入
输入仅包含一个数n(1≤ n ≤ 25)。
输出
输出仅包含一个数你的答案。
样例
输入 复制
4
输出 复制
12
提示
递归穷举即可。答案在2147483647以内。
取数游戏 Description
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <vector> #include <queue> #include <map> #include <stack> #include <set> #include <sstream> #include <iomanip> using namespace std; int result = 0; int a[30]; void output(int n) { int i; for(i=0;i<=n-1;i++) { if (i < n - 2) { if (a[i] == 1 && a[i + 1] == 0 && a[i + 2] == 1) { return; } } if (i == n - 1) { result++; } } } void search(int m,int n) { int i; if(m==n) { output(n); } else { for(i=0;i<=1;i++) { a[m]=i; search(m+1,n); } } } int main() { int array[30]={0,2,4,7,12,21,37,65,114,200,351,616,1081,1897,3329,5842,10252,17991,31572,55405,97229,170625,299426,525456,922111,1618192}; int n; cin>>n; search(0,n); if(array[n] != result)cout<<"error"<<endl; cout<<result<<endl; result = 0; return 0; }
源码给你你继续研究吧
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 potsgresql15备份问题
- ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
- ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
- ¥60 pb数据库修改与连接
- ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
- ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
- ¥20 神经网络Sequential name=sequential, built=False
- ¥16 Qphython 用xlrd读取excel报错
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上