自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Vector

Vector容器与数组不同,它的大小可以动态变化,其存储由容器自动处理。例如:vector<int> x(2);int num=4;while(num--){ x.push_back(1);}x.capacity();//为6 自动扩大了x的空间vector内存成长方式可归结以下三步曲:(1)另觅更大空间;(2)将原数据复制过去;(3)释放原空间。vector可以用下标访问元素,但是,只能访问size以内的#include<vector>/****

2021-03-15 20:41:47 156

原创 错排(2068)

应用场景:n个数全错排的种数核心代码:long long dp[50] = { 1,0,1 }; for (int i = 3; i <= 16; ++i) { dp[i] = (i - 1) * (dp[i - 1] + dp[i - 2]);//公式 }记住错排公式 dp[n] = (n - 1) * (dp[n - 1] + dp[n - 2]) dp[0]=1,dp[1]=0,dp[2]=1...

2021-02-21 20:21:17 83

原创 棋盘最短路径条数(2067)

应用场景:给定条件,求从起点到终点的最短路径条数核心代码://条件为不能穿过对角线,故总条数为一半的条数*2long long dp[40][40] = { 0 }; dp[0][0] = 1; for (i = 1; i < 40; ++i) { for (j = 0; j <=i; ++j) { if (i == j) { dp[i][j] = dp[i][j - 1];//若在对角线,则到达该点的最短路径只能从下面上来 } else if (j ==

2021-02-21 16:06:16 400

原创 快速幂(2065)

应用场景:求a的n次幂核心代码:非递归long long fast_pow(int a,int n) { long long ans=1;//当n为0是为1 while (n) { if (n & 1) ans *= a;//若n为奇数 n >>= 1;//n整除2 a *= a; } return ans;}思路:n看作二进制每次将n右移一位 依次取其二进制位数字若此时为1 则ansa每次取一位 a要进行aa计算 保证当前a的次数 与二进制1所

2021-02-21 14:46:07 91

原创 最短路径(2066)

应用场景:给出存在的路径,求最短核心代码:```cpp//near存起点//hope存终点 //初始化 const int INF = 0x3f3f3f3f int m[max][max]; memset(m, INF, sizeof(m)); for (int i = 0; i < max; ++i) m[i][i] = 0; int ans = INF; for (k = 0; k <=n; ++k) {//每次增加一个中介点,看是否会更短

2021-02-19 20:43:08 89

原创 汉诺塔移动次数(2064)

汉诺塔一般步骤:将 n-1 个圆盘移动到c柱第 n 个圆盘移动到c柱前 n-1 个圆盘再移动到c柱由步骤可得递推式:step(n)=step(n-1)+1+step(n-1)=2*step(n-1)+1 (step[1]=0)即:step(n) = 2^n - 1。本题要求每步只能移到b柱或从b柱移出。故首先将n-1 个圆盘j借助b柱移动到c柱上然后第 n 个圆盘移到b柱前 n-1 个圆盘借助b柱 移动到a上第n圆盘移动到c上最后将n-1个圆盘借助b柱移动到c柱由步骤可得递

2021-02-10 20:39:35 2195

原创 汉诺塔

递归void hanoi(int n,int a,int b,int c) { if (n == 1) {//只有一个则直接移动到c move(a, c); } else { hanoi(n - 1, a, c, b);//将上层n-1个借助c移动到b move(a, c);//将a上剩下的最大的盘移动到c hanoi(n - 1, b, a,c);//将b上的n-1个移动到c }}思路:将圆盘看作两个

2021-02-10 20:27:22 78

原创 母函数 多项式乘法( 2082 )

应用场景:给定不同价值的物品若干,求组成某价值的组合个数或 给定若干不同物品,求取n个的组合个数核心代码://c1保存乘法系数结果//c2暂存本次相乘结果for (i = 0; i <= 50; ++i) {//用第一个多项式初始化c1 c1[i] = 1;//假设最小价值物体质量为1或取物 c2[i] = 0; }for (i = 2; i <= 26; ++i) {//遍历各个物体的多项式 for (j = 0; j <= 50; ++

2021-02-08 13:36:27 121

原创 最短路径问题(2048)

贪心算法之最短路径应用场景:路径分为若干层,每层之间有路径相连,求从起点到终点的最大/最小路径核心代码://对于上图,k为终点编号,a为路径矩阵,n为层数//dp为该点到终点的最长/最短距离//最终的dp[1][1]void search(int k, int a[105][105],int n,int dp[105][105]) { int i, j, t; int x; dp[n][k] = a[n][k];//距离在点上故终点到终点的距离为终点的值 for (i = n - 1;

2021-02-07 19:13:00 255

原创 最多可完成的活动个数(2037)

应用场景:已知各个活动开始与结束时间,判断最多可以参加几个活动核心代码://a[0][i]表示第i个活动开始时间,a[1][i]为结束时间//a已经按照**结束时间**增序排序 int x = 1; int j; for (i = 2; i <=n; ++i) { if (a[0][i] >=a[1][j]) {//第i个活动开始时间是否大于上一个活动j的结束时间 x++; j = i //更新上一个活动j }前一个活动在k

2021-02-06 15:58:57 338

原创 二分图 匈牙利算法(2063)

二分图 匈牙利算法(2063)应用场景:对象可分为两类,每类内部无联系,不同类之间有独占性联系(即a与b相连后,a、b不能与其他相连),求联系最多可以有几对核心代码:/*两类元素个数分别为m,nline[i][j]表示存在i与j的联系used应用于对每个左边元素寻找右边元素时保存访问过的元素pair表右边元素i的匹配元素*/int find(int x, int a[505][505], int *used, int *pair,int n) {//x为当前寻找匹配的元素 int i;

2021-02-06 15:45:31 61

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除