1. 程式人生 > >codevs——2956 排隊問題

codevs——2956 排隊問題

sam 題解 時間限制 .cn all 空間 name printf ide

2956 排隊問題

時間限制: 1 s 空間限制: 32000 KB 題目等級 : 黃金 Gold 題目描述 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; }
TLE 5個點

codevs——2956 排隊問題