算法库-全排列,递归全排列 auti()字符转为整型 stringstream用法

简介: 算法库-全排列,递归全排列 auti()字符转为整型 stringstream用法

导航


1.全排列函数next_permutation(beg,end)

2.auti() //将字符串转化为整型

万能头文件 #include < bits/stdc++.h>

3.stringstream的int型转为string型用法

———————————————————————————————————


1.全排列:可以推举出所有可能性


头文件:#include < algorithm>


例1:(int型)


#include <iostream>
using namespace std;
#include <algorithm>
int main()
{
  int a[] = {1,3,2}; //如果数组中数不是升序的话
  sort(a,a+len);  //注意要排一下序
  int len = sizeof(a)/sizeof(a[0]); //计算出数组中数量 
  do{
  for(int i=0;i<len;i++)
  {
    cout<<a[i];
  }
  cout<<endl;
  }while(next_permutation(a,a+len)); //这个函数返回的是bool类型,没有更多排列返回false 
  return 0;
}


运行结果:



例2:(string型)


#include <iostream>
using namespace std;
#include <algorithm>
#include <string>
int main()
{
  string s;
  cin>>s;
  do{
  cout<<s<<endl;
  }while(next_permutation(s.begin(),s.end())); 
  return 0;
}


运行结果:



例3:(vector容器)


#include <iostream>
using namespace std;
#include <algorithm>
#include <vector>
int main()
{
  vector<int> v;
  for(int i=0;i<=2;i++)
  {
  v.push_back(i);
  }
  do{
  for(vector<int>::iterator it=v.begin();it!=v.end();it++) //迭代器遍历
  {
    cout<<*it;
  }
  cout<<endl;
  }while(next_permutation(v.begin(),v.end())); //放入迭代器
  return 0;
}


运行结果:



手动写一个递归全排列:



学习网址:https://www.bilibili.com/video/av65164273?from=search&seid=12828774151800623150


使用for循环:


#include <stdio.h>
int main()
{
  int a,b,c;
  for(a=1;a<=3;a++)
  for(b=1;b<=3;b++)
    for(c=1;c<=3;c++)
    if(a!=b&&a!=c&&b!=c)
      printf("%d%d%d\n",a,b,c);
  return 0;
}


运行结果:



———————————————————————————————————


2.atoi() //将字符串转化为整型


要保证atoi中是char*型


c语言:


#include <stdio.h>
#include <stdlib.h>  //要加头文件 
int main()
{
  char *s = "123";  //放到atoi中要char*型 
  int a = atoi(s);
  printf("%d",a);  //输出123
  return 0;
}


c++:


#include <iostream>
using namespace std;
#include <stdlib.h>
int main()
{
  string s = "123";
  int a = atoi(s.c_str()); //中间要转换为char*型
  cout<<a<<endl;
  return 0; 
}


———————————————————————————————————


3.stringstream的int型转为string型用法


#include <iostream>
#include <sstream>  //要添加头文件 
using namespace std;
int main()
{
  int a = 145;
  string b;
  stringstream ss;  //定义 
  ss<<a;//传入 
  ss>>b;//转成string型 
  if(b == "145")
  {
  cout<<"相同类型"<<endl; 
  } 
  else
  {
  cout<<"不同类型"<<endl;
  }
  return 0;
}


相关文章
|
27天前
|
算法 前端开发 数据处理
小白学python-深入解析一位字符判定算法
小白学python-深入解析一位字符判定算法
45 0
|
5天前
|
算法 安全 数据安全/隐私保护
Crypto++库支持多种加密算法
【10月更文挑战第29天】Crypto++库支持多种加密算法
23 4
|
3月前
|
算法
【算法】位运算算法——判断字符是否唯一
【算法】位运算算法——判断字符是否唯一
|
3月前
|
算法
【算法】滑动窗口——无重复字符的最长子串
【算法】滑动窗口——无重复字符的最长子串
|
28天前
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
18 1
|
5月前
|
存储 算法 程序员
数据结构与算法===递归
数据结构与算法===递归
|
2月前
|
存储 算法 安全
超级好用的C++实用库之sha256算法
超级好用的C++实用库之sha256算法
77 1
|
28天前
|
算法 定位技术
数据结构与算法学习九:学习递归。递归的经典实例:打印问题、阶乘问题、递归-迷宫问题、八皇后问题
本文详细介绍了递归的概念、重要规则、形式,并展示了递归在解决打印问题、阶乘问题、迷宫问题和八皇后问题等经典实例中的应用。
33 0
|
2月前
|
存储 算法 安全
超级好用的C++实用库之国密sm4算法
超级好用的C++实用库之国密sm4算法
51 0
|
2月前
|
算法 安全 Serverless
超级好用的C++实用库之国密sm3算法
超级好用的C++实用库之国密sm3算法
46 0