有重复元素的排列问题
来源:互联网 发布:内向工作知乎 编辑:程序博客网 时间:2024/05/17 23:07
#include "iostream"#include "algorithm"#include "fstream"using namespace std;int ans = 0;//判断list数组中第i个元素是否在前面元素list[k...i-1]中出现过//如果出现过,返回0, 否则返回1int ok(char list[], int k, int i){ if(i>k) for(int j=k; j<i; j++) if(list[j] == list[i]) return 0; return 1;}//list[0,n],k为层数void perm(char list[], int k, int n){ if(k==n) { ans++; for(int i=0; i<=n; i++) cout << list[i]; cout << endl; } for(int i=k; i<=n; i++) { if(ok(list, k, i)) //先判断list数组中第i个元素是否在前面元素list[k...i-1]中出现过 { //若出现过,这次以i元素打头的全排列跳过。 swap(list[k], list[i]); perm(list, k+1, n); swap(list[k], list[i]); } }}int main(){ ifstream fin("perm.txt"); int n; fin >> n; cout << "字符个数:" << n; char *a = new char[n]; cout << "\n字符串为:"; for(int i=0; i<n; i++) { fin >> a[i]; cout << a[i]; } cout << "\n全排列为:\n"; perm(a, 0, n-1); cout << "个数为:" << ans << endl; fin.close(); return 0;}
0 0
- 8594 有重复元素的排列问题
- 8594 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的全排列问题
- 8594 有重复元素的排列问题
- 有重复元素的全排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 【9501】有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的全排列问题
- 有重复元素的排列问题
- 有重复元素的排列问题
- 有重复元素的全排列问题
- 杭电1166敌兵布阵
- JS下拉列表,随着省份的改变,城市也会有所改变
- 最基础的MarkDown使用
- DDL、DML和DCL的理解
- 分享一个VBA连接mysql数据库的方法
- 有重复元素的排列问题
- .net之jquery操作gridview中的数据
- ViewController 瘦身的另一种解决方案(转)
- JavaScript的对象的讲解
- A*(也叫A star, A星)寻路算法Java版
- CSDN进入markdown编辑器给的例子
- 解压静态库.a文件
- 如何分配和释放存储空间
- 点赞效果爱心不规则上升。