讨论 / 递归做的模拟 超简单
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

}

应该很容易理解 只是速度比动规慢很多

#1 leapoahead@2010-08-09 06:08:00
回复 删除
不包含全部站一排的话n=1或者n=2怎么办。。
#2 沧海一声喵@2018-02-27 19:49:41
回复 删除
回复 #1 leapoahead:n
查看更多回复
提交回复