蓝桥杯算法设计基础算法知识点
最大公约数
//1、最大公约数(辗转相除法)
int gcd(int a,int b)
{
while(b>0)
{
int t=a%b;
a=b;
b=t;
}
cout<<"最大公约数是"<<a<<endl;
}
进制转换
//2.进制转换(先转换成十进制,再转换成十六进制)
int conversion(string a)//a为需要转换的进制数
{
int sum=0;
for(int i=0;i<a.length();i++)
{
if(a[i]<'0'+10)
{
sum+=(a[i]-'0')*pow(16,a.length()-i-1);//先把十六进制转化为十进制为例
//sum+=(a[i]-'0')*pow(a是几进制就填几,a.length()-i-1);
}
else sum+=(a[i]-'A'+10)*pow(16,a.length()-i-1);//只有十六进制才需要,因为只有十六进制需要字母
}
cout<<"十六进制转八进制为"<<oct<<sum<<endl;
//cout<<十六进制为hex,十进制为dec,八进制为oct,<<sum<<endl;
}
类型转换
//3.类型转换(stringstream)
void is(int number , string &str)//int->string
{
stringstream ss;
ss << number;
ss >> str;
}
int si(int number,string & str)//string->int
{
stringstream ss ;
ss << str;
ss >> number;
}
跳出多层循环
int xunhuan()
{
for(int i=0;i<=10;i++)
{
for(int j=0;j<=10;j++)
{
for(int k=0;k<=10;k++)
{
if(i==1&&j==2&&k==3)
{
goto mark;
}
}
}
}
mark:
return 0;
}
快速排序
int partition(int arr[],int i, int j)
{
while(i < j)
{
while(i < j && arr[i] <= arr[j]) j--;
if(i < j) swap(arr[i],arr[j]);
while(i < j && arr[i] <= arr[j]) i++;
if(i < j) swap(arr[i],arr[j]);
}
return i
}
void quick_sort(int arr[], int low, int high)
{
if(low < high)
{
int piovt = partition(arr,low,high);
quick_sort(arr,low,piovt-1);
quick_sort(arr,piovt+1,high);
}
}
动态规划
有算法设计基础的同学建议在CSDN上面找文章好好读一读,
因为动态规划题目都是因题而异,
而且博主刷的真题中近年有好多用到动态规划的题目
博主比较菜,遇到动态规划题目直接白给T^T!
DFS迷宫问题
通过这个视频可以好好理解一下:
dfs深搜解决迷宫问题
博主第一次写博客,明天就要蓝桥杯了,总结了这几个点,欢迎各位大佬在评论区给一些宝贵的经验建议。感谢!