codevs——2956 排隊問題
阿新 • • 發佈:2017-09-25
sam 題解 時間限制 .cn all 空間 name printf ide
2956 排隊問題
時間限制: 1 s 空間限制: 32000 KB 題目等級 : 黃金 Gold 題目描述 Description
有N個學生去食堂,可教官規定:必須2人或3人組成一組,求有多少種不同分組的方法。
輸入描述 Input Description
一個數,N
輸出描述 Output Description一個數,即答案。
樣例輸入 Sample Input6
樣例輸出 Sample Output2
數據範圍及提示 Data Size & HintN<=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> #includeTLE 5個點<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 排隊問題