赞
踩
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
进行穷举法和特殊函数的方法,穷举法的基本思想是全部排列出来.特殊函数法进行特殊排列.
【不包含重复数字的解法】
- #include <iostream>
- using namespace std;
- int main()
- {
- int a[3];
- cout << "请输入一个三位数:" << endl;
- for (int m = 0; m < 3; m++)
- {
- cin >> a[m];
- }
- for (int i = 0; i < 3; i++)
- {
- for (int j = 0; j < 3; j++)
- {
- for (int k = 0; k < 3; k++)
- {
- if (i != j && i != k && j != k)
- {
- cout << a[i] << a[j] << a[k] << " ";
- }
- }
- }
- }
- }
【包含重复数据的解法】
- #include <iostream>
- using namespace std;
- int main()
- {
- int a[3];
- cout << "请输入一个三位数:" << endl;
- for (int m = 0; m < 3; m++)
- {
- cin >> a[m];
- }
- for ( int i = 0; i < 3; i++)
- {
- for (int j = 0; j < 3; j++)
- {
- for (int k = 0; k < 3; k++)
- {
- if (i != j && i != k && j != k)
- {
- cout << a[i] << a[j] << a[k] << " ";
- }
- else if(i==j&&i==k&&j==k)
- {
- cout << a[i] << a[j] << a[k] << " ";
- }
- }
- }
- }
- }
什么是sort函数? http://t.csdn.cn/Tq9Wn
这种方法也是小编特别推荐使用的,因为这种方法不仅可以高效的进行排序而且特别容易理解.
next_permutation(s1.begin(), s1.end())
头文件:
#include <algorithm>
- #include <iostream>
- #include <algorithm>
- #include <string.h>
- using namespace std;
-
- int main()
- {
- string s1;
- cout << "请输入您要的数据:" << endl;
- cin >> s1;
-
- do
- {
- cout << s1 << " ";
- } while (next_permutation(s1.begin(), s1.end()));
-
-
- }
- bool cmp(int a, int b)
- {
- return a > b;
- }
while (next_permutation(s1.begin(), s1.end(),cmp));
sort(s1.begin(), s1.end(), cmp);
比升序多了以上三个数据
- #include <iostream>
- #include <algorithm>
- #include <string.h>
- using namespace std;
- bool cmp(int a, int b)
- {
- return a > b;
- }
- int main()
- {
- string s1;
- cout << "请输入您要的数据:" << endl;
- cin >> s1;
- sort(s1.begin(), s1.end(), cmp);
- do
- {
- cout << s1 << " ";
- } while (next_permutation(s1.begin(), s1.end(),cmp));
-
-
- }
有穷法具有有限性,然而特殊函数法会较好的解决了这个问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。