递归算法:全排列、2的幂次方表示

来源:互联网 发布:机顶盒mac地址绑定 编辑:程序博客网 时间:2024/06/05 20:18
全排列:
/* * 1.cpp * *  Created on: 2017年8月31日 *      Author: Administrator */#include <iostream>#include <algorithm>#include <cstring>using namespace std;void perm(string s, int k){int n = s.length();if (k == n-1) {cout<< s <<endl;} else {for (int i = k; i < n; ++i) {swap(s[i],s[k]);perm(s,k+1);}}}int main(){string s;cin>>s;perm(s,0);return 0 ;}
2的幂次方表示:
/* * 1.cpp * *  Created on: 2017年8月31日 *      Author: Administrator */#include <iostream>#include <algorithm>#include <cstring>using namespace std;void print(int n){if(n == 0) return ;if(n == 1){cout<<"2(0)";return ;}if(n == 2){cout<<"2";return ;}int j = 1, i = 0;do {j <<= 1;if(j>n){j >>= 1;if(i == 1){cout << "2";}else{cout<<"2(";print(i);cout<<")";}if(n - j){cout<<"+";print(n-j);}break;}else{i ++;}} while (1);}int main(){int num;cin>>num;print(num);return 0;}