![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
100种基础算法模板 (c++)
csp,noi基础算法模板, 更新中
给你个后脑勺看
这个作者很懒,什么都没留下…
展开
-
模板 33: 零钱兑换函数
int mincoins(int coinindex, int amount)if(amount ==0) return 0;if( coin Index>= Coinsnumber) return-1;int minnumber INT MAX:int currentcoinnumber=0iwhile (amount >= 0)[int currentmin mincoins(coinindex +1, amountif ((currentmin >=0)&&a.原创 2022-04-18 21:07:43 · 193 阅读 · 0 评论 -
模板 32: 倍增 a^b%p
#include<bits/stdc++.h>#define LL long long using namespace std;int main() { int a,b,p,ans=1; cin>>a>>b>>p; while(b){ if(a&1)ans=(LL)ans*a%p; a=(LL)a*a%p; b>>=1; } cout<<ans%p<<endl; return 0; }原创 2022-04-17 18:23:26 · 175 阅读 · 0 评论 -
模板 31 : 并查集(围棋棋子连通)
围棋的棋子有黑色和白色两种,相同颜色的棋子如果是上下或左右相邻的,则称这两个棋子是连通的,直接或间接连通的棋子称为一块棋。•现在,不断给出N个落棋子的信息(颜色、横坐标、纵坐标),问棋盘上有多少块棋?#include<bits/stdc++.h>using namespace std;int n,m,ans;int num[1000101];//点的编号 int id[100010101];//点所在块的id void init(){//初始化 cin>>.原创 2022-04-16 20:14:44 · 729 阅读 · 1 评论 -
模板 30 : 单调队列通用核心代码
#include<bits/stdc++.h>using namespace std;int n,k,da[100001],dl[1000001],id[1000001],le=1,ri;int main(){cin>>n>>k;for(int i=1;i<=n;i++)//输入循环 {cin>>n>>k;}for(int i=1;i<=n;i++){//主循环 while(le<=r.原创 2022-04-15 19:14:57 · 375 阅读 · 0 评论 -
模板 29 : 背包问题 (动态规划 )伪代码
创建一个状态矩阵f,横坐标 i 是物体编号,纵坐标 j 为背包容量。首先将 f 第0行和第0列初始化为0接for (int i = 1; i <= n; i++){for (int j = V; j >= 0; j--){if (j >= w[i])//如果背包装得下当前的物体{f[i][j] = max(f[i - 1][j], f[i - 1][j - w[i]] + v[i]);}else//如果背包装不下当前物体{f[i][j] =原创 2022-04-14 22:21:46 · 2236 阅读 · 0 评论 -
模板 28: 深度优先和广度优先搜素的伪代码
深度优先搜索void dfs(int x,int y) {if(达到出口||无法继续) //相当于判断边界{ 相应操作; return; } if(对应x方向的下一步可以继续) { 添加标记;dfs(x+1,y);//调用递归 取消标记;}else if(对应y方向的下一步可以继续){添加标记;dfs(x,y+1); 取消标记;}}广度优先搜索void BFS(图){for(所有顶点){ 若该顶...原创 2022-04-13 21:23:04 · 1690 阅读 · 0 评论 -
模板 27 : 二分法查找
bool cheak(int a[],int x){boll flag=false;int l=1;int r=n;while(l<=r){int mid=(l+r)>>1;if(a[mid]==x){flagr=true;break;}if(a[mid]<x)l=mid+1;else r=mid-1;}}原创 2022-04-12 21:23:02 · 183 阅读 · 0 评论 -
模板 26:深度搜索全排列
#include<bits/stdc++.h>using namespace std;int a[11],b[11],n,sum;void dfs(int t){if(t==n+1){sum++;for(int i=1;i<=n;i++){cout<<a[i];}cout<<endl;return;}for(int i=1;i<=n;i++){if(b[i]==0){a[t]=i;.原创 2022-04-09 15:24:27 · 177 阅读 · 0 评论 -
模板 25:十进制转八进制(栈)
#include<bits/stdc++.h>using namespace std;int s[101];int n,top,x;int main(){cin>>n;top=0;while(n)//进栈 {top++;s[top]=n%8;n/=8;}while(top>0)//出栈 {x=s[top];top--;cout<<x;}return 0;}原创 2022-04-09 15:22:17 · 201 阅读 · 0 评论 -
模板 24: n的阶乘 (递推,递归)
递推#include<bits/stdc++.h>using namespace std;int main(){long long a,n;cin>>a;for(int i=1;i<=a;i++){n*=i;}cout<<n;return 0;} 递归#include <iostream>using namespace std;int f(int n){if(n原创 2022-04-09 15:20:44 · 207 阅读 · 0 评论 -
模板 23 : 递推 牌
题目;一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n。当至少还剩三张牌时进行以下操作:把第一、二张牌扔掉,然后把当前状态下新的第一张放到整叠牌的最后。输入n,输出#include<bits/stdc++.h>using namespace std;int a[10000];int main(){int n,front=0,r=0;cin>>n;//输入纸牌的个数for(int i=0;i<n;i++){a[i]=i+1原创 2022-04-09 15:15:18 · 177 阅读 · 0 评论 -
模板 22: 二叉树的个数(递推)
#include<bits/stdc++.h>using namespace std;int n;long long f[20];int main(){cin>>n;f[0]=1;f[1]=1;for(int i=2;i<n;i++){for(int j=0;j<i;j++){f[i]=f[i]+f[j]*f[i-j-1];}}cout<<f[n]<<endl;return 0;.原创 2022-04-08 23:00:48 · 359 阅读 · 0 评论 -
模板 21: 兔子繁殖 (菲波那切数列)
#include<bits/stdc++.h>//兔子问题 using namespace std;long long f[100];int n; long long fac(int n){long long p;if(f[n]!=-1) return f[n];p=fac(n-1)+fac(n-2);f[n]=p;return p;}int main(){cin>>n;memset(f,-1,sizeof f);f[.原创 2022-04-08 22:58:24 · 56 阅读 · 0 评论 -
模板 5-1: 求最大公因数(函数版)
#include<bits/stdc++.h>//求最大公因数(函数版) using namespace std;//运用辗转相除法int gcd(int m,int n)//n是分子m是分母 {if(n==0) return m;else{return gcd(n,m%n);} } int main(){int m,n;cin>>m>>n;cout<<gcd(m,n);cout<<.原创 2022-04-08 22:54:58 · 95 阅读 · 0 评论 -
模板 20 : 海伦公式 (函数方式)
题目:通过边长#include<bits/stdc++.h>using namespace std;double s(double a,double b,double c){double l=(a+b+c)/2;return sqrt(l*(l-a)*(l-b)*(l-c));}int main(){double b1,b2,b3,b4,b5,b6,b7,l,a;cin>>b1>>b2>>b3>>b4&原创 2022-04-07 22:16:31 · 324 阅读 · 0 评论 -
模板 19 : 递归函数
题目:输出如第一行有一个一,第二行有两个二以此类推直到n#include<bits/stdc++.h>using namespace std;void p(int n){if(n>0){p(n-1);for(int i=0;i<n;i++){cout<<n;}cout<<endl;}}int main(){p(5);return 0;}...原创 2022-04-07 21:32:45 · 67 阅读 · 0 评论 -
模板 18: 逆序输出字符串(1,2)
#include<bits/stdc++.h>using namespace std;int main(){ string str; cin>>str;reverse(str.begin(), str.end()); cout<<str<<endl; return 0;}2#include<bits/stdc++.h>using namespace std;int main(){cha.原创 2022-04-05 20:03:54 · 188 阅读 · 0 评论 -
模板 16: 最长字符串
二维数组中,非零字符串的最长长度#include<bits/stdc++.h>using namespace std;int a[1005][1005];int main(){int mun,max=0;int n,m,k,i,j;cin>>n>>m>>k;for(i=0;i<n;i++){for(j=0;j<m;j++){cin>>a[i][j];}}for(j=0;j原创 2022-04-05 19:48:46 · 193 阅读 · 0 评论 -
模板 17 : 大写字母转小写字母
题目:大写字#include<bits/stdc++.h>using namespace std;int main(){char a;cin>>a;if(a>='A'&&a<='Z'){int b=(int)a+32;cout<<(char)b;} else {cout<<"请输入大写字母"; }return 0;} 母转小写字母...原创 2022-04-05 19:45:42 · 44 阅读 · 0 评论 -
模板 15: 杨辉三角 (二维数组)
题目:输出N行杨辉三角#include<bits/stdc++.h>using namespace std;int main(){int a[100][100],n;cin>>n;for(int i=0;i<n;i++){a[i][i]=1;a[i][0]=1;for(int j=1;j<i;j++){a[i][j]=a[i-1][j]+a[i-1][j-1];}}for(int i=0;i<n;i++){for(int j=原创 2022-04-05 12:45:24 · 235 阅读 · 0 评论 -
模板 14 :一维数组冒泡排序
题目: 输入数组,从大到小排序#include<bits/stdc++.h>using namespace std;int main(){int a[1001];int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=0;i<=n;i++)for(int j=0;j<=n;j++){if(a[i]>a[j])swap(a[i],a[j]);}//输出他们原创 2022-04-03 21:34:39 · 190 阅读 · 0 评论 -
模板 13: 百元百鸡
题目: 公鸡5元一只, 母鸡3元一只,小鸡1元3只, 100元整买多少只鸡?#include<bits/stdc++.h>using namespace std;int main(){int n;cin>>n;int a[110];for(int i=1;i<=n;i++){cin>>a[i];}int max=0;for(int i=0;i<=n;i++){if(a[i]>max){max=a[i];}}co原创 2022-04-03 16:00:29 · 371 阅读 · 0 评论 -
模板12 :输出最大数(一维数组)
t题目: 输出数组中最大数#include<bits/stdc++.h>using namespace std;int main(){int n;cin>>n;int a[110];for(int i=1;i<=n;i++){cin>>a[i];}int max=0;for(int i=0;i<=n;i++){if(a[i]>max){max=a[i];}}cout<<max;return 0;原创 2022-04-03 15:17:18 · 40 阅读 · 0 评论 -
模板 11:位数输出,每位之和
题目: 输出位数 和 每位之和#include<bits/stdc++.h>using namespace std;int main(){int a;cin>>a;int d,sum;d=0;sum=0;while(a>0){sum+=a%10;d++;a/=10;}cout<<d<<" "<<sum;return 0;}原创 2022-04-03 15:14:11 · 30 阅读 · 0 评论 -
模板 10:素数判断
题目; 判断一个数是不是质数#include<bits/stdc++.h>using namespace std;int main(){int a;cin>>a;int i; for(i=2;i<=a;i++) { if(a%i==0) { break; } } if(i==a) { cout<<"yes"; } else{cout<<"no";}return 0;}...原创 2022-04-03 15:11:54 · 29 阅读 · 0 评论 -
模板6: 最大公约数和最小公倍3
#include<bits/stdc++.h>using namespace std;int main(){int a,b,c=0;cin>>a>>b;int s=a*b;if(a<b){swap(a,b);}while(a-b!=0){if(a<b){swap(a,b);}c=a-b;a=b;b=c;} cout<<s/b<<" ";cou.原创 2022-04-01 19:49:48 · 631 阅读 · 0 评论 -
模板7 : 字母大小写转换
题目:输入一个字符,判断它是否为大写字母,如果是,把它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。#include<bits/stdc++.h>using namespace std;int main(){char a;cin>>a;a=(a>='A'&&a<='Z')?(a+32):a;cout<<(char)a;return 0;}...原创 2022-04-02 21:45:08 · 113 阅读 · 0 评论 -
模板9: 分解质因数
#include<bits/stdc++.h>using namespace std;int main(){ int n; cin>>n; for(int i=2;i*i<=n;i++) { while(n%i==0) { cout<<i<<' '; n=n/i; }retrun 0; } if(n!.原创 2022-04-02 21:33:42 · 244 阅读 · 0 评论 -
模板8 :乘法表
#include<iostream> using namespace std;int main(){int i, j; for (i = 1; i < 10; i++){ for (j = 1; j <= i; j++) { cout <<i<<"x"<<j<<"="<< i * j << "\t"; } cout << endl;.原创 2022-04-02 21:31:00 · 57 阅读 · 0 评论 -
模板5: 最大公约数和最小公倍 2
求两数的最大公约数和最小公倍数 (枚举)#include<bits/stdc++.h>using namespace std;int main(){int n,m;int d;cin>>n>>m;d=n*m;if(n<m){swap(n,m);}for(int i=n;i>=1;i--){if(m%i==0&&n%i==0){cout<<i<<" ";原创 2022-04-01 19:47:15 · 234 阅读 · 0 评论 -
模板 4 : 最大公约数和最小公倍数1
题目#include<bits/stdc++.h>using namespace std;int main(){ int m,n,c,d; cin>>m>>n; d=n*m; if(m<n){ swap(m,n); } while(m%n!=0) { c=m%n; m=n; n=c; } cout<<n<<" "<&原创 2022-04-01 19:44:09 · 351 阅读 · 0 评论 -
模板3:条件嵌套
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。#include<bits/stdc++.h>using namespace std;int main(){int a;cin>>a;if(a>=90){cout<<"A";}else if(a>=60&&a<90){cout<<"B";}else{cout<原创 2022-03-31 12:31:51 · 40 阅读 · 0 评论 -
模板2 :else if
else if原创 2022-03-31 12:26:48 · 42 阅读 · 0 评论 -
模板1 : Switch 语句
算法模板 switch原创 2022-03-31 12:22:59 · 161 阅读 · 0 评论