cogs 1164. 跑步
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; }
细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。
雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。