赞
踩
这道题的做法和全排列的做法基本一致。
class Solution { int t=1; //表示的是第几个排列 String s=""; List<Integer> path; boolean st[]; public String getPermutation(int n, int k) { path = new ArrayList<>(); st = new boolean[n]; int a[] = new int[n]; for(int i=0;i<n;i++) a[i] = i+1; dfs(a,0,k,path); return s; } //u表示的是已经选择了u-1+1个数,目前开始选第u个数。 //也可以理解成层数 public void dfs(int a[],int u,int k,List<Integer> path){ if(u==a.length){ if(t==k) for(int i=0;i<path.size();i++) s=s+path.get(i); t++; return; } for(int i=0;i<a.length;i++) if(st[i]==false){ st[i] = true; path.add(a[i]); dfs(a,u+1,k,path); path.remove(path.size()-1); st[i] = false; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。