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

算法库-全排列,递归全排列 auti()字符转为整型 stringstream用法导航 1 全排列函数 next permutation beg end 2 auti 将字符串转化为整型 万能头文件 include lt bits stdc h gt 3 stringstream 的 int 型转为 string 型用法 1 全排列 可以推举出所有可能性

大家好,我是讯享网,很高兴认识大家。

导航

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/av?from=search&seid=

使用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; } 
小讯
上一篇 2025-04-05 09:47
下一篇 2025-02-20 18:52

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/51260.html