栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于n个数全排列的栈实现!

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于n个数全排列的栈实现!

题目大意:

        输入n个数,求出对于1-n的数的全排列的所有情况。

        比如 输入数据  3:

                        则可能的情况有123,132,213,231,312,321.

        依题意得:此时需要考虑的因素有输出次数为输入数据的n的阶乘次,同时输出需要带有一定的次序,并且利用栈进行数据的理想实现。

        通过多方查阅资料可以得到解决的算法有:

                1.通过递归进行实现。

                2.通过栈操作进行实现,

对于递归,我这里就不进行实现了,毕竟网络上的教程很多都是关于递归实现这一方法。这里主要介绍比较少的栈实现的方法。

方法核心:

       建立 一个循环,将栈中的数据多次弹出,每一次弹出都寻找一次,在栈外的数据有没有比弹出的数据大的,一旦条件成立就将大的这个数据入栈接着将栈外的数据从小到大依次入栈,每一次条件成立,就输出一次。

代码如下:

package Main;
import java.util.*;
import java.math.*;
public class Main1856 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in = new Scanner(System.in);
		int pa=1;
		while(in.hasNext()) {
			int fa = in.nextInt();
			SeqStack1856 seq = new SeqStack1856();
			for(int i=1;i<=fa;i++) {
				seq.push(i);
			}
			System.out.println("Case "+pa+++":");
			System.out.println(seq);
			while(!seq.isEmpty()) {
				int i = seq.pop();
				
//				System.out.println(seq.get()+"hhhh ");
				
				for(;i{
	T[] t;
	int top;
	public SeqStack1856() {
		t = (T[])new Object[1024];
		top = -1;
	}
	public int search(int i) {
		
//		for(int o=0;o 

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/284766.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号