codevs——2956 排队问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codevs——2956 排队问题相关的知识,希望对你有一定的参考价值。
题目描述 Description
有N个学生去食堂,可教官规定:必须2人或3人组成一组,求有多少种不同分组的方法。
输入描述 Input Description
一个数,N
输出描述 Output Description
一个数,即答案。
样例输入 Sample Input
6
样例输出 Sample Output
2
数据范围及提示 Data Size & Hint
N<=150
递推
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; long long n,f[11000]; long long read() { long long x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘) ch=getchar(); while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();} return x*f; } int main() { n=read(); f[2]=f[3]=1; for(int i=4;i<=n;i++) f[i]=f[i-2]+f[i-3]; printf("%lld",f[n]); return 0; }
dfs
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; long long n,ans; long long read() { long long x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘) ch=getchar(); while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘; ch=getchar();} return x*f; } void dfs(int k) { if(k>n) return; if(k==n) {ans++; return;} dfs(k+2);dfs(k+3); } int main() { n=read(); dfs(0); printf("%lld",ans); return 0; }
以上是关于codevs——2956 排队问题的主要内容,如果未能解决你的问题,请参考以下文章