前言
以下是一些C++入门基础函数,涉及循环,递归,模拟,深搜等内容,学会这些,小学生比赛拿一等奖将会很稳!
正文
函数如下:
0 阶乘(太简单了,可以不算)
int jc(int n)
{
int ans=1;
for(int i=2;i<=n;i++) ans*=i;
return ans;
}
1普通判素数函数
bool pzs(int n)
{
if(n<2) return false;
for(int i=2;i*i<=n;i++)
if(n%i==0) return false;
return true;
}
2求最大公因数函数(gcd)
int gcd(int a,int b)
{return (b==0?a:gcd(b,a%b));}
3基于gcd求最小公倍数函数(lcm)
int lcm(int a,int b)
{return a*b/gcd(a,b);}
4冒泡排序
void bubble_sort(int n,int &a[])
{
for(int i=1;i<=n;i++)
{
bool f=0;
for(int j=1;ja[j+1]) swap(a[j],a[j+1]),f=1;}
if(f==0) return;
}
}
5猴子选大王(约瑟夫问题)
void josephus(int &a[],int n,int m)
{
int s=0,t=n;
while(t>0)
{
for(int i=0;i
6 进制转换(string)
string szhe2(long long n,long long p)
{
string s="";
if(n==0) return "0";
while(n)
{
long long g=n%p;
if(g<10) s=(char)(g+48)+s;
else s=(char)(g+55)+s;
n=n/p;
}
return s;
}
long long szhe1(string s,int p)
{
long long n=0,m=s.size();
for(int i=0;i
7 整数与字符串的互转
long long stll(string s)
{
long long ans=0;
for(int i=0;i
8 汉诺塔(hanoi)
void hanoi(int n,char a,char b,char c)
{
if(n>0)
{
hanoi(n-1,a,c,b);
ans++;
if(ans==m) cout<
9 斐波那契数列
void fibonacci(int &a,int &b,int &c,int &d)
{
if(d==n)
{
cout<
10 筛选找素数函数
bool check[2000002];
void prime(int n)
{
check[1]=1;
for(int i=2;i*i<=n;i++)
{
if(!check[i])
{for(int j=i*i;j<=n;j+=i) check[j]=1;}
}
}
11 01背包
int bag(int t,int n,int w[],int v[])
{
int f[10001];
for(int i=1;i<=n;i++)
{
for(int j=t;j>=w[i];j--)
if(f[j-w[i]]+v[i]>f[j]) f[j]=f[j-w[i]]+v[i];
}
return f[t];
}
12 生成全排列
long long a[10001],u[10001],b[10001],n;
void dy(long long n)
{
for(long long i=1;i<=n;i++) cout<<' '<n) dy(n);
else
{
for(long long i=1;i<=n;i++)
{
if(u[b[i]]==0)
{
u[b[i]]=1;
a[d]=i;
dg(d+1);
u[b[i]]=0;
}
}
}
}
13 回文数
bool hws(int n)
{
int ans=0,m=n;
while(m>0)
{
ans=ans*10+m%10;
m/=10;
}
return ans==n;
}
以下就是C++入门基础函数,希望这篇文章能够在某些方面帮到你!
附 表格
函数 知识点 难度 阶乘 单循环 半颗星 判素数(普通) 单循环 一颗星 最大公因数 简单递归 两颗星 最小公倍数 调用函数 一颗星 冒泡排序 嵌套循环,数组 两点五颗星 约瑟夫问题 模拟 三颗星 进制转换 字符串 三颗星 整数字符串互转 循环,字符串 两颗星 汉诺塔 递归初步 三颗星 斐波那契数列 递归 三颗星 筛选找素数 模拟 三点五颗星 01背包 简单动态规划 五颗星 生成全排列 深搜 五颗星 回文数 循环 一颗星



