Java 火车出站序列
2019-11-26 22:29
2301 查看
火车出站序列:
思路:
三个变量:待进站火车个数,待出站火车个数,已出站火车个数
import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List; import java.util.ArrayList; import java.util.Scanner; import java.util.Stack; import java.util.TreeSet; import java.util.Set; public class Train { public static boolean isLegal(int[] in,int[] out,int n){ int i=0; int j=0; Stack<Integer> stack=new Stack<>(); while (i<n){ if(in[i]==out[j]){ i++; j++; } else{ if(stack.empty()){ stack.push(in[i]); i++; } else { int top=stack.peek(); if(top==out[j]){ j++; stack.pop(); } else{ if(i<n){ stack.push(in[i]); i++; } } } } } while(!stack.empty()&&j<n){ int top=stack.pop(); if(top==out[j]){ j++; } else { return false; } } return true; } public static void swap(int[] arr,int i,int j){ int tmp=arr[i]; arr[i]=arr[j]; arr[j]=tmp; } public static void Permutation(int []arr,int start,int N, ArrayList<int[]> result){ if(start==N){ return; } if(start==N-1){ int [] str=arr.clone();//数组拷贝 result.add(str); return; } for(int i=start;i<N;i++){ swap(arr,i,start); Permutation(arr,start+1,N,result); swap(arr,i,start); } } public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNext()) {//有多组测试用例 int N = in.nextInt();//[1,9] int[] arr = new int ; for (int i = 0; i < N; i++) { arr[i] = in.nextInt(); } ArrayList<int[]> result = new ArrayList<>();//很多组, int start = 0; Permutation(arr, start, N, result); Set<String> set = new TreeSet<String>(); for (int[] out : result) {//遍历result if (isLegal(arr, out, N)) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < N - 1; i++) { sb.append(out[i] + " "); } sb.append(out[N - 1]); set.add(sb.toString()); } for (String s : set) {//遍历 里是string的set System.out.println(s); } } } } }
相关文章推荐
- 火车进出站问题:有多少种出站序列
- 仲恺acm 1095:火车出站【java】
- 蓝桥杯 序列求和 java
- “最大子序列和”算法 java
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流) (黑马程序员)
- java实现序列对比Needleman–Wunsch Algorithm, Smith–Waterman Algorithm
- 火车出站入站问题
- java写出一个序列的所有排列组合
- 公共子序列 -Java实现
- JAVA语言__火车
- java Serializable 生成随机序列
- java找出银行家算法所有安全序列
- 和为S的连续正数序列Java实现
- 二叉搜索树的后序遍历序列(Java),复杂度O(n)解法
- 网易2018内推Java开发工程师笔试题----操作序列
- java中猴子吃桃子的问题和求分数序列和的问题
- 蓝桥杯(java)入门训练 序列求和
- java原生序列接口
- Js把Json序列化为Java接受的对象。
- 黑马程序员——Java基础:IO(二):File类、Properties类、打印流、序列流......