算法库-全排列,递归全排列 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;
}


相关文章
|
24天前
|
算法
【算法】位运算算法——判断字符是否唯一
【算法】位运算算法——判断字符是否唯一
|
24天前
|
算法
【算法】滑动窗口——无重复字符的最长子串
【算法】滑动窗口——无重复字符的最长子串
|
3月前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
3月前
|
存储 算法 程序员
数据结构与算法===递归
数据结构与算法===递归
|
22天前
|
算法 Java
掌握算法学习之字符串经典用法
文章总结了字符串在算法领域的经典用法,特别是通过双指针法来实现字符串的反转操作,并提供了LeetCode上相关题目的Java代码实现,强调了掌握这些技巧对于提升算法思维的重要性。
|
24天前
|
算法
【算法】递归、搜索与回溯——汉诺塔
【算法】递归、搜索与回溯——汉诺塔
|
24天前
|
算法
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
|
24天前
|
算法
【算法】递归、搜索与回溯——简介
【算法】递归、搜索与回溯——简介
|
2月前
|
算法 Python
python中算法递归错误(Recursion Errors)
【7月更文挑战第18天】
30 1
|
3月前
|
存储 算法 数据可视化
算法金 | D3blocks,一个超酷的 Python 库
D3Blocks是一个基于d3.js的Python图形库,用于创建吸引人的数据可视化图表,如D3graph、Elasticgraph和Sankey图。拥有超过470个Star,其特点包括简易性、功能丰富、易用性、可定制性和及时更新。通过pip安装后,用户能轻松创建粒子图和其他图表。文中展示了实战应用,如能源数据集的网络图,通过调整节点和边的属性实现个性化展示。关注作者,享受智能乐趣。
82 8
算法金 | D3blocks,一个超酷的 Python 库
下一篇
DDNS