UESTC1133 菲波拉契数制 01背包思想
2016-07-21 00:11
471 查看
Description
我们定义如下数列为菲波拉契数列:
F(1)=1
F(2)=2
F(i)=F(i−1)+F(i−2)(i>=3)
给定任意一个数,我们可以把它表示成若干互不相同的菲波拉契数之和。比如13有三种表示法
13=13
13=5+8
13=2+3+8
现在给你一个数n,请输出把它表示成若干互不相同的菲波拉契数之和有多少种表示法。
Input
第一样一个数T,表示数据组数,之后T行,每行一个数n。
T≤105
1≤n≤105
Output
输出T行,每行一个数,即n有多少种表示法。
Sample Input
6
1
2
3
4
5
13
Sample Output
1
1
2
1
2
3
由于数据比较小,因此用01背包的想法去考虑即可。可用滚动数组对内存进行优化。
#include <iostream>
#include <cstdio>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long LL;
LL f[50];
LL dp[100005];
int main()
{
f[1]=1;
f[2]=2;
for(int i=3;i<50;i++){
f[i]=f[i-1]+f[i-2];
}
memset(dp,0,sizeof(dp));
dp[0]=1;
for(int i=1;i<50;i++){
for(int j=100000;j-f[i]>=0;j--){
dp[j]+=dp[j-f[i]];
}
}
int t;
scanf("%d",&t);
while(t--){
LL n;
scanf("%d",&n);
printf("%lld\n",dp
);
}
return 0;
}
我们定义如下数列为菲波拉契数列:
F(1)=1
F(2)=2
F(i)=F(i−1)+F(i−2)(i>=3)
给定任意一个数,我们可以把它表示成若干互不相同的菲波拉契数之和。比如13有三种表示法
13=13
13=5+8
13=2+3+8
现在给你一个数n,请输出把它表示成若干互不相同的菲波拉契数之和有多少种表示法。
Input
第一样一个数T,表示数据组数,之后T行,每行一个数n。
T≤105
1≤n≤105
Output
输出T行,每行一个数,即n有多少种表示法。
Sample Input
6
1
2
3
4
5
13
Sample Output
1
1
2
1
2
3
由于数据比较小,因此用01背包的想法去考虑即可。可用滚动数组对内存进行优化。
#include <iostream>
#include <cstdio>
#include <map>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
#define INF 0x3f3f3f3f
typedef long long LL;
LL f[50];
LL dp[100005];
int main()
{
f[1]=1;
f[2]=2;
for(int i=3;i<50;i++){
f[i]=f[i-1]+f[i-2];
}
memset(dp,0,sizeof(dp));
dp[0]=1;
for(int i=1;i<50;i++){
for(int j=100000;j-f[i]>=0;j--){
dp[j]+=dp[j-f[i]];
}
}
int t;
scanf("%d",&t);
while(t--){
LL n;
scanf("%d",&n);
printf("%lld\n",dp
);
}
return 0;
}
相关文章推荐
- 给 UITextField 添加左侧指示图片(类似微信登录框)
- hive和hue集成报错
- Mybatis 使用@requestbody 日期自定义转换
- POJ 2533 Longest Ordered Subsequence(最长上升子序列长度、O(nlogn))
- UITableView学习笔记
- gensim:No module named queue
- javaee之request和response的详细练习
- poj 1417 True Liars 带权并查集+母函数dp
- C#根据时间产生有序的GUID编码
- 分享一个Fluent风格的邮件发送封装类
- POJ1141 Brackets Sequence(DP)
- Starting MySQL....The server quit without updating PID file 处理方法
- Intel XDK 上对Edison + Arduino 编程
- return continue break
- java中stringBuilder的用法
- String,StringBuffer与StringBuilder的区别??
- GCD
- iOS开发从入门到精通-- 步进器UIStepper和分栏控制器UISegmentedControl
- mysql query to find the maximum 3 values from a column and group by on other column
- GUI监听器实现方式