康托展开【Template】
2018-03-28 12:44
176 查看
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> #include<vector> #include<cmath> #include<map> #include<set> #include<queue> using namespace std; #define ll long long int char a[200] = { '1','5','3','2','4' }, s[200]; int num[200]; int fac[] = { 1,1,2,6,24,120,720,5040,40320 };//jiecheng int kangtuo(int n, char a[]) {//已知数字求位置 int i, j, t, sum; sum = 0; for (i = 0; i < n; i++) { t = 0; for (j = i + 1; j < n; j++) { if (a[i] > a[j]) ++t; } sum += t * fac[n - i - 1]; } return sum + 1; } void reverse_kangtuo(int n, int k, char s[])//已知位置求数字 { //1~n的全排列,其中的第K个数为s[] int i, j, t, vst[8] = { 0 }; --k; for (i = 0; i < n; i++) { t = k / fac[n - i - 1]; for (j = 1; j <= n; j++) { if (!vst[j]) { if (!t) break; --t; } } s[i] = '0' + j; vst[j] = 1; k %= fac[n - i - 1]; } } int main() { int tmp = kangtuo(5, a); cout << tmp << endl; reverse_kangtuo(5, 5, s); for (int i = 0; i <= 10; i++) { cout << s[i]; } cout << endl; system("pause"); return 0; }
相关文章推荐
- c++之排序(template)
- C++中 模板Template的使用
- getHibernateTemplate()为NUll
- Underscore.js template()函数全解析
- 执行了getHibernateTemplate.save(user)后,控制台有hql语句输出,显示已经将数据存到数据库了,也没有抛出异常,但是去oracle数据库查的时候,压根就没有数据。。。。请问
- 类模板-template
- spring的RabbitTemplate 发送Message源码导读
- Spring RestTemplate介绍
- Django——如何使用Template以及如何向template传递变量
- (转)iBaits中SqlMapClientTemplate的使用
- 关于template 的23个问题
- Hibernate之Template
- 模板(template)中typename的使用方法
- AmqpTemplate-发送-接收-消息
- (C++ 11) template argument deduction
- Spring JMSTemplate 与 JMS 原生API比较
- django 模板中无法实现计算,收集的方案。在django template 中实现乘法,除法运算
- HTML语义化:HTML5新标签——template
- 设计模式之模板方法模式(Template)
- getHibernateTemplate()和getSession()的区别