qw4990 2010-08-09 06:08:00
点我顶贴
收藏
删除
#include<iostream>
using namespace std;
int n,M=0;
void dp(int al,int now) //剩余人数,上一层人数
{
if(al==0) {M++;return;}
if(now>al) return;
for(int k=now+1;k<=al;k++)
dp(al-k,k);
}
main()
{
cin>>n;
dp(n,0);
cout<<M-1; //不包含全部站成一排的情况 故减1
}
应该很容易理解 只是速度比动规慢很多