简单的少犯点错误

int num[23],n;
void cal(int x,int cnt){
	if(x>n){
		rep(i,1,cnt-1){
			print(num[i]);
			blank;
		}
		if(cnt) println(num[cnt]);
		return;
	}
	cal(x+1,cnt);//
//	rep(i,x+1,n){
//		
//	}
	num[cnt+1]=x+1;
	cal(x+1,cnt+1);
	//pop
}
int main(){
	n=4;
	cal(0,0);
}
  1. cnt==0时不要输出
  2. 往下枚举不要傻傻地rep,前面cal就已经选择了不枚举
  3. 如果只随机选出m个直接加判定cnt>m||cnt+n-x+1<m结束,不要忘了后面不可能存在的情况
posted @ 2018-01-31 08:54  Caturra  阅读(100)  评论(0)    收藏  举报