C++15道基础算法题---(2)排列组合
来源:互联网 发布:navicat for mysql语法 编辑:程序博客网 时间:2024/06/10 05:26
两种排列组合问题:
- abc acb bac bca cab cba
- a b c ab ac bc abc
1.第一种
交换问题。
#include <iostream>#include <algorithm>#include <string>#include <vector>#include <cstdio>#include <cstdlib>#include <cmath>#include <stack>#include <map>using namespace std;//全排列 ab ba void swap(char *i,char *j){ char tmp=*i; *i=*j; *j=tmp;}int main(){ string s; while(cin>>s){ int count=1; int len=s.length(); for(int i=0;i<len-1;i++){ for(int j=i+1;j<len;j++){ swap(s[i],s[j]); count++; swap(s[i],s[j]); } } cout<<count<<endl; } return 0;}
1.第二种
使用位运算。
//全排列 a b abint a[] = {1,3,5,4,6};char str[] = "abcde";void print_subset(int n , int s){ printf("{"); for(int i = 0 ; i < n ; ++i) { if( s&(1<<i) ) // 判断s的二进制中哪些位为1,即代表取某一位 printf("%c ",str[i]); //或者a[i] } printf("}\n");}void subset(int n){ for(int i= 0 ; i < (1<<n) ; ++i) { print_subset(n,i); printf("--------------------\n"); }}int main(void){ subset(5); return 0;}
0 0
- C++15道基础算法题---(2)排列组合
- {C语言算法}排列组合
- C++:排列组合算法
- 排列组合算法(位移)2
- c/c++算法 排列组合问题
- 算法基础:排列组合问题-全排列(Golang实现)
- 排列组合算法封装2
- 排列组合算法(Java)
- 基础算法之排列组合生成算法
- 基础算法之排列组合生成算法
- 数据结构与算法(C语言版)__排列组合
- 算法:排列组合之C(N,M)
- c语言实现排列组合算法问题
- c语言实现排列组合算法问题
- c语言实现排列组合算法问题
- c语言实现排列组合算法问题
- c# C(m,n) 排列组合算法
- 一道字符串排列组合算法题
- Unity 初级保龄球游戏
- 关于AsyncTask的执行序理解
- Android Retrofit使用教程(一)
- hdu1811Rank of Tetris
- Nginx出现413 Request Entity Too Large错误解决方法
- C++15道基础算法题---(2)排列组合
- 腾讯8.3
- Java中byte基础类型的特殊性
- 我所理解的REST API
- MFC播放wav音频文件
- css文本
- Android Recyclerview GridLayoutManager column spacing
- 配置xampp php openssl遇到的问题
- 第四课、Scala集合