【题目描述】
n节标号依次为1~n的车厢组成的火车沿人字形的轨道先进站再出站,根据先进后出的原则,请输出所有可能的出站情况。
【输入】
一个整数n,即车厢数。
【输出】
total+1行,1~total行为total种情况,最后一行为total,即所有情况数。
【思路】
先递归找出n个元素的全排列,由根据先进后出的原则,对任意一节车厢,在它之后出站的所有车厢号比它小的车厢必按倒序排列,遍历筛选出可能的出站情况。
【代码】
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int total = 0;
/*筛选*/
void print(int num[],int m)
{
int flag = 1,over = 0;
for(int i = 0;i < m;i++)
{
int min = num[i];
for(int j = i+1;j < m;j++)
{
if(num[i] > num[j])//如果后面元素比它小
{
if(min > num[j])//如果也小于min
{