给定整数n(0<n<10),求全排列。比如n=3, 输出123 132 213 231 312 321
来源:互联网 发布:淘宝店消保金 编辑:程序博客网 时间:2024/06/05 12:48
目录
- 目录
- 思想
- 主函数main
- Permuint n
- next_permuvector num n
思想
假设给定6,那么输出的顺序应该是 : 123546,123564,123645 ,123654,124356 …..654321
主函数main
int main(int argc, char const *argv[]){ cout << "Input an number..." << endl ; int n; cin >> n; Permu(n); return 0;}
Permu(int n)
void Permu(int n){ std::vector<int> v; for (int i = 0; i < n; ++i) { v.push_back(i+1); cout << i+1; } if (n==1) return; while(next_permu(v, n));}
将1,2,3…n压入一个vector,每次调用next_permu()来产生并输出一个一个排列。
next_permu(vector& num, n)
bool next_permu(vector<int>& num, int n){ int i = n - 2; int ii = n - 1; while(num[i] > num[ii]) { --i; --ii; } if (i < 0) return false; ii = n -1; while(num[i] > num[ii]) { --ii; } swap(num[i], num[ii]); ii=n-1; i=i+1; while(i < ii) { swap(num[i], num[ii]); ++i; --ii; } for(auto c : num ) cout << c; cout << endl ; return true ;}
比如某次num里面的元素为123456,那么调用一次next_permu函数后,变为123465,然后再调用next_permu,变为123546,123564,123645 ,123654,124356 …..注意第一个while循环和第二个while循环的语句块不同,实现的功能也不同:第一个while循环的作用是确定i,找到将用于交换的第一个元素; 经过第一个循环体后,重新定位ii,而对i不重新定位,第二个循环体的作用是找出比num[i]大的最小整数,同时这个整数也是小于等于第一次while循环ii所指向的num[ii],用于完成两者的交换。这样交换之后,num[i]之后的元素都是降序排列,然后再重新定位i和ii(ii=n-1; i=i+1;), 当i
0 0
- 给定整数n(0<n<10),求全排列。比如n=3, 输出123 132 213 231 312 321
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628800,N!的末尾有两个0。
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3 628 800,N!的末尾有两个0。
- 给定整数N,按要求输出Z字型矩阵
- 给定一整数n(1<n<9) 求1-n的全排列 用穷举法 效率不是很好!
- 整数n的全排列
- PKU1401:给定一个整数N,那么N的阶乘N!末尾有多少个0。
- 给定一个整数N,那么N的阶乘N!末尾有多少个0
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?
- 给定一个整数N,求N的阶乘N!末尾有多少个0?
- 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?
- 给定一个整数N,那么N的阶乘N!末尾有多少个0
- 输出 0----N 的全排列
- 因数分解 因数分解是十分基本的数学运算,应用广泛。下面的程序对整数n(n>1)进行因数分解。 比如,n=60, 则输出:2 2 3 5。请补充缺失的部分。
- 输出n的全排列
- 单一label 多种字体 多种大小
- Mac常用命令
- Network Wars-ZOJ2676最小割+01规划
- grid++实现报表
- 多线程技术方案(ios)
- 给定整数n(0<n<10),求全排列。比如n=3, 输出123 132 213 231 312 321
- 宝库iOS开发笔试题
- HTML5模拟齿轮动画
- 《基于MFC的OpenGL编程》Part 2 Drawing Simple 2D Shapes
- myeclipse快捷键大全
- 文件或目录的权限
- 字符串逆转的方法
- open与fopen的区别
- CI环境搭建