跑步
来源:互联网 发布:常见数据库管理系统 编辑:程序博客网 时间:2024/04/28 20:55
跑步
【问题描述】
路人甲准备跑N (5≤N≤500)圈来锻炼自己的身体,他准备分多次跑完,每次都跑正整
数圈,然后休息下再继续跑。为了有效地提高自己的体能,他决定每次跑的圈数都必须比
上次跑的多。可以假设他刚开始跑了0圈,那么请问他可以有多少种跑完这N圈的方案?
【输入】
一个整数N
【输出】
跑完这N圈的方案数
【样例输入】
212
【样例输出】
995645335
===============
这道题相当于是数的拆分
----------------------------------
因为第i次的圈数一定要比i-1次的圈数多..
所以就相当于是数的拆分.....
--------------------------------------
转化为0/1背包问题...
1 2 3 4 5 6 7 8 9…………
-----------------------------------
var n:longint; f:array[0..500]of int64; a:array[0..500]of longint;procedure init;begin assign(input,'run.in'); assign(output,'run.out'); reset(input); rewrite(output);end;procedure terminate;begin close(input); close(output); halt;end;function max(a,b:longint):longint;begin if a>b then exit(a); exit(b);end;procedure main;var i,j:longint;begin readln(n); //for i:=1 to n do f[i]:=0; f[0]:=1; //for i:=1 to n do a[i]:=i+n-1; for i:=1 to n-1 do for j:=n downto i do f[j]:=f[j]+f[j-i]; writeln(f[n]);end;begin init; main; terminate;end.
================