我是靠谱客的博主 风趣小蝴蝶,最近开发中收集的这篇文章主要介绍N个数依次进栈,求所有可能的出栈方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

import java.util.Arrays;
public class N个数的出栈方式 {
static int flag_count=0;
public static void main(String[] args){
int N=10;
int[] array=new int[N];
for(int i=0;i<array.length;i++){
array[i]=i+1;
}
//
countOfoutOfStack(0,0,0,array.length);
//
System.out.println(flag_count);
outOfStack(0,0,0,new int[N],new int[N],array);
}
public static void outOfStack(int cur,int curIn,int curOut,int[] inStack_,int[] outStack_,int[] array){
//在递归中,如果数组中的元素一直增加,没有覆盖,用一个static数组就可以了
//如果有元素的删除,要用拷贝,太浪费空间了。。还没想出好方法
int[] inStack=Arrays.copyOf(inStack_,inStack_.length);
int[] outStack=Arrays.copyOf(outStack_,outStack_.length);
//
int[] inStack=inStack_;
//
int[] outStack=outStack_;
if(curOut==array.length){
System.out.print("第"+(++flag_count)+"种: ");
for(int a:outStack){
System.out.print(a+" ");
}
System.out.println();
return;
}
if(curIn>0){
outStack[curOut]=inStack[curIn-1];
outOfStack(cur,curIn-1,curOut+1,inStack,outStack,array);
}
if (cur<array.length) {
inStack[curIn] = array[cur];
outOfStack(cur + 1, curIn + 1, curOut, inStack, outStack, array);
}
}
//只计算出栈方式数,不记录路径的话
public static void countOfoutOfStack(int cur,int curIn,int curOut,int n){
if(curOut==n){
flag_count++;
return;
}
if(curIn>0){
countOfoutOfStack(cur,curIn-1,curOut+1,n);
}
if (cur<n) {
countOfoutOfStack(cur + 1, curIn + 1, curOut, n);
}
}
}

  

最后

以上就是风趣小蝴蝶为你收集整理的N个数依次进栈,求所有可能的出栈方式的全部内容,希望文章能够帮你解决N个数依次进栈,求所有可能的出栈方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部