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

xiaoxiao2021-02-28  111

全排列: /* * 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; }

转载请注明原文地址: https://www.6miu.com/read-27756.html

最新回复(0)