cogs 1164. 跑步
阿新 • • 發佈:2017-09-06
pan sca pen ostream ring 有效 min scanf def
1164. 跑步
★ 輸入文件:runa.in
輸出文件:runa.out
簡單對比
時間限制:1 s 內存限制:128 MB
【題目描述】
路人甲準備跑N (5≤N≤500)圈來鍛煉自己的身體,他準備分多次跑完,每次都跑正整數圈,然後休息下再繼續跑。為了有效地提高自己的體能,他決定每次跑的圈數都必須比上次跑的多。可以假設他剛開始跑了0圈,那麽請問他可以有多少種跑完這N圈的方案?
【輸入格式】
一個整數N
【輸出格式】
跑完這N圈的方案數
【樣例輸入】
- 212
【樣例輸出】
995645335
思路:f[i][j]表示跑了i圈時,最後一次跑了幾圈。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n; long long ans,f[501][501]; int main(){ //freopen("runa.in","r",stdin); //freopen("runa.out","w",stdout); scanf("%d",&n); for(int i=0;i<n+1;i++) f[i][i]=1; for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) for(int k=1;k<min(j,i-j+1);k++) f[i][j]+=f[i-j][k]; for(int i=1;i<n;i++) ans+=f[n][i]; cout<<ans; }
cogs 1164. 跑步