前言
以下是一些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 fib(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;
}
14求整数位数
int qws(long long n)
{
int ans=0;
while(n>0)
{
ans++;
n/=10;
}
return ans;
}
15递推求汉诺塔次数
long long dthanoi(int n)
{
if(n==0) return 0;
long long ans=1;
for(int i=1;i<=n;i++) ans*=2;
return ans-1;
}
以下就是C++入门基础函数,希望这篇文章能够在某些方面帮到你!
附 表格
函数 | 知识点 | 难度 |
阶乘 | 单循环 | 半颗星 |
判素数(普通) | 单循环 | 一颗星 |
最大公因数 | 简单递归 | 两颗星 |
最小公倍数 | 调用函数 | 一颗星 |
冒泡排序 | 嵌套循环,数组 | 两点五颗星 |
约瑟夫问题 | 模拟 | 三颗星 |
进制转换 | 字符串 | 三颗星 |
整数字符串互转 | 循环,字符串 | 两颗星 |
汉诺塔 | 递归初步 | 三颗星 |
斐波那契数列 | 递归 | 三颗星 |
筛选找素数 | 模拟 | 三点五颗星 |
01背包 | 简单动态规划 | 五颗星 |
生成全排列 | 深搜 | 五颗星 |
回文数 | 单循环 | 一颗星 |
求整数位数 | 循环初步 | 一颗星 |
递推求汉诺塔步数 | 递推 | 三颗星 |