常用算法总结(穷举法、贪心算法、递归与分治算法、回溯算法、数值概率算法)
目录
- 1、穷举法
- 2、贪心算法
- 3、递归与分治算法
- 4、回溯算法
- 5、数值概率算法
1、穷举法
基本思想:
在可能的解空间中穷举出每一种可能的解,并对每一个可能解进行判断,从中筛选出问题的答案。
关键步骤:划定问题的解空间,并在该解空间中一一枚举每一种可能的解。
注意点:
1、解空间的划定必须保证覆盖问题的全部解:只有问题的解集属于解空间集合才能使用穷举法求解。
2、解空间集合以及问题的解集一定是离散的集合。即可列的、有限的
例1:寻找给定区间的素数
分析:最简便的方法就是穷举法,在1-100中对每个整数进行判断。
code:
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include "malloc.h"
#include "conio.h"
int IsPrime(int n)
{//判断n是否为素数,如果是返回1,如果不是返回0int i;for (i=2;i<n;i++){if (n % i == 0) return 0;}return 1;
}
void GetPrime(int low, int high)
{//寻找【low,high】之间的素数int i;for (i=low;i<=high;i++){if (IsPrime(i)){printf("%d ",i);}}
}
//测试函数
int main()
{int low, high;printf("输入搜索范围:\n");printf("搜索起点:");scanf("%d",&low);printf("搜索终点:");scanf("%d", &high);printf("区域中的素数为:\n");GetPrime(low,high);_getche();return 0;
}
例2:TOM的借书方案:
TOM共有5本新书,要借给A、B、C三个同学,每人只能借1本书,则TOM可以有多少种借书方法?
分析:设5本书的序号为{1,2,3,4,5},每个同学借的书范围限定于此。方案总数不可能超过5 * 5 * 5=125种。由于1本书一次只能借给1位同学,因此在每一种借书方案中,元素有重复的排列组合一定不会是问题的解。所以可以描述如下:
//测试函数
int main()
{int i, j, k;int print_times = 0;printf("有如下的几种方案:\n");for(i=1;i<=5;i++)for(j=1;j<=5;j++)for(k=1;k<=5;k++)if (i != j && j != k && i != k){print_times++;printf(" (%d,%d,%d) ",i,j,k); //输出借书方案if (print_times % 10 == 0) printf("\n");}_getche();return 0;
}
效果:
2、贪心算法
贪心算法不从整体最优上加以考虑,所做的仅是在某种意义上的局部最优解。而局部最优解叠加到一起便是该问题整体上的最优解,或者近似最优解。
严格意义上讲,要使用贪心算法求解问题,该问题应当具备如下性质:
1、贪心选择性质:指求解的问题的整体最优解可以通过一系列的局部最优解得到。所谓局部最优解,就是指在当前的状态下做出的最好的选择。
2、最优子结构性质:
一个问题的最优解包含着它的子问题的最优解
例题1:最优装船问题
有一批集装箱要装入一个载重量为C的货船中,每个集装箱的质量由用户自己输入指定,在货船的装载体积不限制的前提下,如何装载集装箱才能尽可能多地将集装箱装入货船中?
算法设计:
1、数组w[]存放每个集装箱的质量
2、数组x[]存放每个集装箱的取舍状态
3、变量c存放货船的剩余载重量,初始值为C
4、为了使装载可能多的集装箱,每次都选出数组w[]中当前w[i]值最小的集装箱,并将x[i]置1,同时c=c-w[i]
5、循环执行4操作,直道w[i]>c,表明货船装货已经达到最大载重量,输出x[]中所有x[i]=1的下标i
代码描述
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include "malloc.h"
#include "conio.h"void swap(int& a, int& b)
{//方法一: int tmp = 0;tmp = b;b = a;a = tmp;//方法二: //a = a+b; //b = a-b; //a = a -b; //方法三: //a ^= b ^= a ^= b; //方法四: //a = a+b-(b=a);
}
void sort(int w[], int t[], int n)
{int i, j;//动态开辟一个临时数组,存放w[]中的内容,用于排序int* w_tmp = (int*)malloc(sizeof(int) * n);for (i = 0;i < n;i++)t[i] = i; //初始化t[]for (i = 0;i < n;i++)w_tmp[i] = w[i]; //复制数组w[]到w_tmp[]中//将w_tmp[]与t[]共同排序,当w_tmp实现从小到大排列后,t[]中存放的就是w_tmp[]元素在w[]中对应的下标for (i = 0;i < n - 1;i++)for (j = 0;j < n - i - 1;j++)if (w_tmp[j] > w_tmp[j + 1]){swap(w_tmp[j], w_tmp[j + 1]);swap(t[j], t[j + 1]);}
}
//输入: x[]集装箱取舍状态 w[]每个集装箱的质量 c船的剩余载重量 n一共几个货物
void Loading(int x[],int w[],int c,int n)
{int i, s = 0;//动态开辟出一个临时数组,存放w[]的下标,如果t[i],t[j],i<j,则有w[t[i]] <= w[t[j]];int* t = (int*)malloc(sizeof(int)*n); sort(w, t, n); //排序,用数组t[]存放w[]的下标for (i = 0;i < n;i++)x[i] = 0; //初始化取舍状态数组for (i = 0;i < n && w[t[i]] <= c;i++){x[t[i]] = 1;c = c - w[t[i]];}
}
//t存放数组w[]的下标,使得如果i<j,则w[t[i]]<=w[t[j]];
//例如w[3]={5,3,2} 则t[3]={2,1,0},即将w[]从小到大排序,然后记录下w[i]的原本下标i在新的顺序中的位置。
//原本5,3,2三个元素排列顺序为:5,3,2,对应下标0,1,2,从小到大排之后5,3,2三个元素排列顺序为:2,3,5,下标对应原来的(2,1,0)int main()
{int x[5], w[5], c, i;printf("输入船最大载重量:\n");scanf("%d",&c);printf("输入5个载货箱的重量:\n");for (i = 0;i < 5;i++)scanf("%d",&w[i]);//进行最优装载Loading(x,w,c,5);printf("这些箱子将被装入:\n");for (i = 0;i < 5;i++){if (x[i] == 1) printf("BOX:%d ",i);}_getche();return 0;
}
3、递归与分治算法
基本思想:
将规模较大的问题分割为规模较小的同类问题,然后将这些子问题逐个加以解决,最终也就将整个大的问题解决了。
分治思想:举例,折半查找就是利用序列之间元素的顺序关系,不断缩小问题的规模,每次都将问题缩小为原来的1/2,采用顺序的方法查找需要O(n),而折半只需要O(long2n)
递归思想:一种直接或间接地调用原算法本身的一种算法。
设计递归算法需要注意的几点:
1、每个递归函数都必须有一个非递归定义得初始值,作为递归结束标志,或递归结束的出口
2、递归算法的运行较低,时间和空间复杂度都比较高,对于一些对时间和空间要求较高的程序,建议使用非递归算法设计。
例题:
1、计算整数的划分数
将一个正整数n表示为一系列的正整数之和:
n=n1+n2+n3+n4;(n1>=n2>=n3>=nk>=1,k>=1)
被称为正整数n的一次划分。一个正整数n可能存在不同的划分,例如正整数6的全部的划分为;
6=6
6=5+1
6=4+2、6=4+1+1
6=3+3、6=3+2+1、6=3+1+1+1
6=2+2+2、6=2+2+1+1、6=2+1+1+1+1
6=1+1+1+1+1+1
正整数n的不同的划分的个数被称为该正整数n的划分数。
编写一个程序,计算输入的正整数n的划分数
分析:设标记p(n,m)表示正整数n的所有不同的划分中,最大加数不大于m的划分个数。例如P(6,2)=4,因为在正整数6的全部划分中,最大加数不大于2的只有:6=2+2+2、6=2+2+1+1、6=2+1+1+1+1
6=1+1+1+1+1+1,四个划分。
建立如下4个递归关系:
1、P(n,1) =1.n>=1
任何正整数n的划分中,加数不大于1的划分有且仅有1种,即n=1+1+1+…+1(n个1)
2、P(n,m)=P(n,n),m>=n
最大加数等于n,不存在最大加数大于n的情况
3、P(n,n)=P(n,n-1)+1
最大加数为n的划分只有1种,即n=n,因此最大加数不大于n的划分数就是P(n,n-1)+1
4、P(n,m)=P(n,m-1)+P(n-m,m),n>m>1
正整数n的最大加数不大于m的划分数=n的最大加数不大于m-1的划分数+n的最大加数为m的划分数
例:
根据这四个式子书写code:
int P(int n, int m)
{if (m == 1 || n == 1) return 1;if (m > n) return P(n,n);if (m == n) return 1 + P(n, m - 1);return P(n, m - 1) + P(n - m, m);
}
int main()
{int n, s;printf("请输入一个整数\n");scanf("%d",&n);s = P(n, n);printf("整数的最大划分数为 %d \n",s);_getche();return 0;
}
2、递归折半查找
原本的折半查找code:
int bin_search(keytype key[], int n, keytype k)
{int low = 0, high = n - 1, mid;while (low <= high){mid = (low + high) / 2;if (key[mid] == k)return mid;if (k > key[mid])low = mid + 1; //在后半序列中查找elsehigh = mid - 1;}return -1; //查找失败,返回-1
}
修改为递归形式:
typedef int keytype;
int bin_search(keytype key[], int low,int high,keytype k)
{int mid;if (low > high) return -1;else{mid = (low+high) / 2;if (key[mid] == k)return mid;else if (k > key[mid])return bin_search(key, mid + 1,high,k);elsereturn bin_search(key,low,mid-1,k);}
}int main()
{int n, i, addr;int A[10] = { 2,3,5,7,8,10,12,15,19,21 };printf("初始序列为:\n");for (i = 0;i < 10;i++)printf("%d ",A[i]);printf("\n输入待查找的元素:\n");scanf("%d",&n);addr = bin_search(A,0,9,n);if (addr != -1){printf("%d 下标为%d",n,addr);}else{printf("元素不在序列中");}_getche();return 0;
}
4、回溯算法
基本思想:
在包含问题的所有解的解空间中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去;如果该结点不包含问题的解,那就说明以该结点为根结点的子树一定不包含问题的最终解,因此要跳过对以该结点为根的子树的系统探索,逐层向其祖先结点回溯。这个过程叫做解空间树的“剪枝”操作。
如果应用回溯法求解问题的所有解,要回溯到解空间树的树根,这样才能保证根结点的所有子树都被探索到才结束。如果只要求得问题的一个解,那么在探索解空间树时,只要搜索到问题的一个解就可以结束了。
1、四皇后问题求解
问题描述:求解如何在一个NxN的棋盘上无冲突地摆放N个皇后棋子,在任意一个皇后所在位置的水平、数值、以及45度斜线上都不能出现其他皇后的棋子,否则视为冲突。
以四皇后问题为例,构建出一棵空间树,通过探索这棵解空间树,可以得到四皇后的一个解或者几个解。
根结点派生出4个子结点,每个结点都示意出前两个皇后可能摆放的位置。每个结点又可以派生出4个子结点,每个结点都示意出前3个皇后可能摆放的位置,整个解空间树为一棵4叉的满树,共包含4x4x4+4x4+4+1=85个结点.
应用回溯法解决问题:从根结点出发,深度优先搜索整个解空间树。当访问到根结点的第一个孩子时,观察结点,如果该结点不包含问题的解,那么由该结点作为根结点派生出来的子树中也肯定不会包含四皇后问题的解,停止向下搜索,回溯到根结点,继续太多根结点的下一个孩子结点。这就是”剪枝“操作,可以减少搜索的次数
在解决出四皇后问题时,并不一定要真的构建出这样的一棵解空间树,它完全可以通过一个递归回溯来模拟。所谓解空间树只是一个逻辑上的抽象。当然也可以用树结构真实地创建出一棵解空间树,不过比较浪费空间资源。
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include "malloc.h"
#include "conio.h"//四皇后问题求解
int count = 0; //记录四皇后问题解的个数
//判断该位置的8邻域是否存在皇后,如果有返回0 如果没有返回1
int IsCorrect(int i,int j,int (*Q)[4])
{int s, t;for (s = i, t = 0;t < 4;t++)if (Q[s][t] == 1 && t != j) return 0; //判断是否在同一行for (t = j, s = 0;s < 4;s++)if (Q[s][t] == 1 && s != i) return 0; //判断是否在在同一列for (s = i - 1, t = j - 1;s >= 0 && t >= 0;s--, t--)if (Q[s][t] == 1) return 0; //判断是否在左上方for (s = i + 1, t = j + 1;s < 4 && t < 4;s++, t++)if (Q[s][t] == 1) return 0; //判断是否在右下方for (s = i - 1, t = j + 1;s >= 0 && t <4;s--, t++)if (Q[s][t] == 1) return 0; //判断是否在右上方for (s = i + 1, t = j - 1;s < 4 && t >=0;s++, t--)if (Q[s][t] == 1) return 0; //判断是否在左下方//否则返回1return 1;
}//输入参数: j:二维数组Q的列号(0-3),最开始调用时,j=0,表明第一个皇后摆放在棋盘上的第一列。(*Q)[4]:指向二维数组每一行的指针
//中间变量:i:二维数组Q的行号(0-3),通过对变量i的4次循环,可以分别探索四皇后问题的4棵解空间树(以Q[0][0]、Q[1][0]、Q[2][0]、Q[3][0]为解空间树的根结点)
//当j=4时,表明Q第0-3列都已经放置好棋子了,说明此时得到了一个四皇后的解,因此程序返回上一层
void FourQueen(int j, int(*Q)[4])
{int i, k;//如果得到一个解if (j == 4){//打印出结果for (i = 0;i < 4;i++){for (k = 0;k < 4;k++)printf("%d ", Q[i][k]);printf("\n");}printf("\n");//解个数+1//返回到上一级_getche();count++;return;}//否则for (i = 0;i < 4;i++){if (IsCorrect(i, j, Q)) //如果Q[i][j]可以放置皇后,表明这一列不需要再探索了{Q[i][j] = 1;FourQueen(j+1,Q); //探索下一列,递归深度优先搜索//Q[i][j]=0,以便循环,试探Q[i+1][j](下一行)是否可以摆放皇后,因为如果这一行如果没有找到解,需要清除这一行痕迹,然后到下一行继续探索Q[i][j] = 0;}}
}
//测试函数
int main()
{int Q[4][4];int i, j;//初始化数组Qfor (i = 0;i < 4;i++)for (j = 0;j < 4;j++)\Q[i][j] = 0;FourQueen(0,Q); //执行四皇后求解printf("四皇后解法有%d种\n",count);_getche();
}
效果:
2、上楼梯问题
已知楼梯有20阶,上楼可以一步上1阶,也可以一步上2阶。编写一个程序计算共有多少种不同的上楼梯方法。
分析:采用递归回溯,用一棵空间二叉树描述
从根结点出发向下搜索,每经过一个结点,则表示这一步登上的台阶数。每次都将访问结点中的数字相加,记录为当前已经走过的台阶数,当这个数字等于20,就表示寻找出了一种上楼梯的方案。那么该结点以下的结点也就没必要再访问了,而是向其父结点回溯并继续探索下一分支。
代码:
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include "malloc.h"
#include "conio.h"#define MAX_STEPS 20 //定义20个台阶的楼梯
int Steps[MAX_STEPS] = { 0 }; //Steps[i]等于1或者等于2,记录第i步登上的台阶数
int cnt = 0; //记录上楼梯的方案的数目void Upstairs(int footstep,int count,int step)
{//footsetp:当前要登的台阶数、count:已经走过的阶数、step:走过的步数int i;if (count + footstep == MAX_STEPS){//得到一种上楼梯方案Steps[step] = footstep;cnt++; //方案数+1//打印出方案for (i = 0;i < step;i++){printf("%d ",Steps[i]);}printf("\n");//返回到父结点,不必再向下搜索}else if (count + footstep > MAX_STEPS){//超过了楼梯的阶数,不必再向下搜索,返回到父结点return;}else{//Steps[step] = footstep; //记录当前上楼梯的台阶数step++; //步数+1count = count + footstep; //记录目前已经走过的台阶数//递归探索后续的分支Upstairs(1,count,step); //走1步的分支Upstairs(2, count, step); //走2步的分支}
}
void UpstairsALL()
{Upstairs(1,0,0); //从第一步上1个台阶开始探索解空间树Upstairs(2, 0, 0); //从第一步上2个台阶开始探索解空间树
}int main()
{UpstairsALL();printf("一共有%d种解法\n",cnt);_getche();
}
效果:
5、数值概率算法
概率算法允许在执行过程中随机地选择下一步的计算步骤,因此使用概率算法有时会大大降低复杂度,提高算法的效率,但有时也可能得不到问题的全部答案。
概率算法可以分为4类:
1、数值概率算法
2、蒙特卡洛算法
3、拉斯维加斯算法
4、舍伍德算法
这里只介绍最基础的数值概率算法。
数值概率算法常用于解决数值计算的问题。应用数值概率算法往往只能得到问题的近似解,并且该近似解的精度一般随着计算时间的增加而不断提高。
例:f(x)=1-x^2;计算定积分:
该积分的几何意义如下:
如果随机地向图中虚线与x,y坐标轴所围成的正方形中投点,那么根据几何概率知识可知,随机点落入阴影区域的概率即为阴影部分的面积与虚线与x,y轴所围成的正方形的面积之比。
所以只要求出随机点落入阴影区域的概率的概率就求出了定积分的近似值。
算法描述:
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include "malloc.h"
#include "conio.h"
#include "time.h"double Darts(int n) //n为试验投点的个数,决定了计算概率的精度
{double x, y;time_t t;int i, count = 0;srand((unsigned)time(&t));for (i = 0;i < n;i++){//随机初始化投点的坐标x = rand() % 100 / 100.0;y = rand() % 100 / 100.0;if (y <= 1 - pow(x, 2))count++; //如果随机点落入阴影区域,则用count++记录个数}return (double)count / (double)n; //返回概率
}
//测试函数
int main()
{int n;char c;printf("请输入试验精度(越大精度越好):\n");scanf("%d", &n);printf("结果为:\n");printf("%f\n", Darts(n));_getche();return 0;
}
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 牛客练习赛70(A-重新排列 )
牛客练习赛70(A-重新排列 ) 这道题做了一晚上都没过,之后看到了大佬的代码,受益良多O(∩_∩)O 题目描述 牛牛有个很喜欢的字符串”puleyaknoi“。 牛牛有T个很长很长的字符串,他很喜欢把字符串中的子串(连…...
2024/4/27 22:52:36 - 吴恩达课程编程环境配置windows
吴恩达的deep learning. ai课程配套的编程作业需要环境配置如下: 因为作业中使用到了TensorFlow与Keras,相应的版本为 python:3.6.0 tensorflow:1.2.1 keras:2.0.7 推荐的开发环境为:Anaconda Tensorflow Keras 因…...
2024/4/28 8:07:16 - vue中引入公共方法并使用
1、在utils文件夹中新建utils.js /*** 通用js方法封装处理两种方式* Copyright (c) 2019 ruoyi*//** 第一种方式*/ function myFun() {console.log(this is my function) } function fn1(){console.log("全局方法一") }// 将上面连个全局公共方法,组合成…...
2024/4/28 6:51:25 - 最新 抖音 x-gorgon 0408 算法定位查找过程笔记 2020-09-22 最新抖音12.4版本
介绍: 本次分析抖音版本:12.4 x-gorgon版本:0408 可测试 下列逆向hook记录来自抖音11.3 0401 ,新版hook跟之前类似 抖音作为目前流量最大、日活跃最高的平台,目前也有很多不同行业的人对它进行逆向分析研究&am…...
2024/4/7 9:24:11 - 173.二叉搜索树迭代器
题目: 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: BSTIterator iterator new BSTIterator(root); iterator.next(); // 返回 3 …...
2024/4/7 14:46:02 - 干货:用好VSCode这13款插件,工作效率提升10倍
柠檬哥整理了50本计算机相关的电子书,关注公众号「后端技术学堂」,回复「1024」我发给你,回复「进群」拉你进读者技术交流群。 本文首发个人微信公众号,点击阅读原文 大家好我是lemon, 马上进入我们今天的主题吧。 又…...
2024/4/27 5:14:35 - 如何简单快速画UML图?
用例图可以通过系统外部用户的角度来描述系统的功能,操作者可以依据用例图来实行各功能的操作。用例图可以通过一个用例来描述一个行为、角色和用例的关系。构成用例图的元素有:角色、用例、包含关系和扩展关系。因此,当我们想要了解一个系统…...
2024/4/22 15:18:02 - MySQL相关知识整理 -- <<MySQL必知必会>>阅读笔记一 (基础内容-较高频率使用)
基础知识点 1、show databases (展示数据库)、 show tables (展示表) 2、use ‘databaseName’ –- use myte (选择对应数据库) 3、show columns from ‘tableName’ (展示对应表的结构描叙) (可以简写为describe) 4、show grants (显示当前的用户及权限) 5、select 查询语句 (…...
2024/4/16 14:18:13 - 抖音最新 xlog算法分析(xlog算法逆向),xlog算法作用 设备激活 设备注册出来不可用
文章编写于: 2020-08-27 想必有些人对xlog算法有点不太懂,这里给大家解释下什么是xlog? 会抓包的朋友应该见过这个包: https://xlog.snssdk.com/v2/r? 这个就是xlog的包,其body体为加密函数,加密过程VM…...
2024/4/7 14:45:58 - 编译型语言与解释型语言,动态语言与静态语言,强类型语言与弱类型语言
目录一、编译型语言与解释型语言1.编译型语言2.解释型语言二、动态类型语言与静态类型语言1.动态类型语言2.静态类型语言三、强类型定义语言与弱类型定义语言1.强类型定义语言2.弱类型定义语言一、编译型语言与解释型语言 1.编译型语言 定义:将分散在各个源文件中…...
2024/4/7 14:45:58 - Robocon
①max232 http://www.elecfans.com/soft/78/223/2019/201907261002945.html...
2024/4/7 14:45:56 - Vue CLI 3 的安装与初始化项目步骤
啊实打实的...
2024/4/28 19:43:41 - 嵌入式系统作业1
一、实验要求 1、请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果…...
2024/4/7 14:45:55 - 连续存储数组
#include<stdio.h> #include<malloc.h> #include<stdlib.h>struct Arr {int * pBase;//存储数组第一个元素的地址 int len;//数组所能容纳的最大元素的个数 int cnt;//当前数组有效元素个数 } ;void init_arr(struct Arr* pArr,int length);//初始化 bool a…...
2024/4/19 4:57:58 - 李忠汇编语言-初学-第十一天
学习目标 第十二章 学习小结 划水了一天 学习内容 类型:汇编语言 进度:初学 天数:第十一天 日期:2020年09月25日 书籍:李忠汇编语言 相关:无 内容:第十二章 时间:2020年09…...
2024/4/7 14:45:52 - STM32固件库手把手点灯
一、新建工程模板 二、keil新建工程 三、添加组文件夹 四、工程模板下USER中新建led文件夹,其中包含led.c和led.h led.h: #ifndef __LED_H #define __LED_H#include "stm32f10x.h"#define ON 1 #define OFF 0 #define LED(a)…...
2024/4/22 13:16:29 - 数据库学习与复习笔记--数据库概念和不同类数据库CRUD操作(1)
数据库:用于存储和管理数据的仓库。 数据库的特点: 1.持久化存储数据。其实数据库就是一个文件系统 2.方便存储和管理数据 3.使用了统一的方式操作数据库。--SQL 常用数据库:MYSQL(免费、开源)、Oracle MySQL服务…...
2024/4/26 8:31:30 - 作业1.0
ubantu环境下的c语言编程 创建并打开文档 输入下列代码后按回车会进入文档页面,然后按 i 后开始编辑文档 输入代码 保存退出 代码编辑完成后按 esc 键 退出编辑并输入 :wq 按回车 编译运行 同理创建sub1.c文档,代码内容如下float x2x(int a,int b) { …...
2024/4/18 8:55:18 - Nginx实现流量控制
目录前言一、Nginx如何限流?二、Nginx限流实战2.1 实战12.2 实战22.3 扩展总结前言 流量限制 (rate-limiting),我们可以用来限制用户在给定时间内HTTP请求的数量。流量限制可以用作安全目的,比如可以减慢暴力密码破解的速率,更常…...
2024/4/24 8:48:41 - windows系统中python开发环境的搭建
一. 编译型语言和解释型语言 根据翻译的时间不同,翻译的方式分为两类 编译:执行前一次性翻译 解释:边执行边翻译 二. python解释器的安装和配置 2.1 python的安装和配置 python的下载地址:https://www.python.org/ 2.2 选择w…...
2024/4/22 6:25:14
最新文章
- 一篇文章让你搞懂联邦学习算法
联邦学习(Federated Learning)是一种分布式机器学习技术,它可以在不共享数据的情况下训练模型。这种技术在多个参与方之间协作构建共享的预测模型,同时保持每个参与方的数据本地化,不暴露给其他方。联邦学习特别适用于数据隐私敏感的场景,如医疗、金融和移动设备等。 定…...
2024/4/28 23:33:32 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 虚拟货币:数字金融时代的新工具
在数字化时代的到来之后,虚拟货币逐渐成为了一种广为人知的金融工具。虚拟货币是一种数字化的资产,它不像传统货币那样由政府或中央银行发行和监管。相反,虚拟货币通过密码学技术和分布式账本技术来实现去中心化的发行和交易。 虚拟货币的代…...
2024/4/19 5:33:22 - audio_video_img图片音视频异步可视化加载
最近在做即时消息,消息类型除了文字还有音频、视频、图片展示,如果消息很多,在切换聊天框时,会有明显卡顿,后续做了懒加载,方案是只加载用户能看到的资源,看不到的先不加载; LazyAud…...
2024/4/27 13:10:31 - WPS二次开发专题:WPS SDK实现文档打印功能
作者持续关注WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 在办公场景或者家教场景中经常碰到需要对文档进行打印…...
2024/4/26 8:23:14 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/4/28 4:04:40 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/4/28 12:01:04 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/4/28 16:34:55 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/4/28 18:31:47 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/4/28 12:01:03 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/4/28 12:01:03 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/4/28 12:01:03 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/4/28 16:07:14 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/4/27 21:08:20 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/4/28 9:00:42 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/4/27 18:40:35 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/4/28 4:14:21 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/4/27 13:52:15 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/4/27 13:38:13 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/4/28 12:00:58 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/4/28 12:00:58 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/4/27 22:51:49 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/4/28 7:31:46 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/4/28 8:32:05 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/4/27 20:28:35 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57