蓝桥杯2014年决赛 出栈次序 【暴力美学】

这道题刚开始以为要用栈,之后发现其实用递归的思想也是可以模拟出来。

思路:对每一辆车来说进去之后无非是出去或者再等等。这里我就用递归当中的act来代表这辆车的想法。把每一种情况都暴力模拟出来。

直接在代码当中解释吧。

#include <iostream>

using namespace std;
int num=0;			      // 可行情况的数目 
void vis(bool act,int n,int k){       //act:true为进去,false为出来  n代表当前已经经历过进栈的车的数量 k代表经历过出栈车的数量 
	if(n>16) return ;             //进栈不可以超过16 
	if(k==16) {		      //出栈了16次代表其中的一种情况 
		num++;
		return ;
	}
	vis(true,n+1,k);	      //这里代表再进一辆 
	if(k<n) vis(false,n,k+1);     //这里代表再出一辆 k<n是因为不能出大于进 
	 return ;
} 

int main(){
	vis(true,1,0); 		      //当然是从第一辆进来开始啦 
	cout<<num<<endl;
}

猜你喜欢

转载自blog.csdn.net/qq_38071217/article/details/80226195
今日推荐