跑步

来源:互联网 发布:常见数据库管理系统 编辑:程序博客网 时间: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.


 

 

================