首页 > 代码库 > 全排列
全排列
/* 全排列的非递归实现,支持去掉重复 */ void main() { rbuf<int> v #v.push(1,2,3,4) for v.join('').printl ifn next_permutation<int>(v) break } bool next_permutation<T>(rbuf<T>& v) { if v.count<=1 return false next=v.count-1 for temp=next next-- if v[next]<v[temp] mid=v.count-1 for !(v[next]<v[mid]) mid-- swap<T>(v[next],v[mid]) reverse<T>(v,temp) return true if next==0 reverse<T>(v,0) return false } void swap<T>(T& a,T& b) { temp=a a=b b=temp } void reverse<T>(rbuf<T>& v,int begin,int end=v.count) { end-- for begin<end swap<T>(v[begin],v[end]) begin++ end-- }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。