算法设计与分析-图算法小结BFS/DFS/Topologic/Dijkstra/Floyd/最大流
图
注:CSDN貌似不支持较长公式,可以复制到Markdown编辑器查看
图的表示
- 邻接矩阵 空间复杂度 Θ ( V 2 ) Θ(V^2) Θ(V2)
- 邻接链表 空间复杂度 Θ ( V + E ) Θ(V+E) Θ(V+E)
BFS
-
邻接链表 时间复杂度 Θ ( V + E ) Θ(V+E) Θ(V+E)
-
void BFS(Graph G, int v) {//从顶点v出发,广度优先遍历图Gvisit(v);//访问初始顶点vsited[v] = true;//标记访问Enqueue(Q, v);//入队while (!isEmpty(Q)) {DeQueue(Q, v);//出队for (w = FirstNeighbor(G, v); w >= 0; w = NextNeighbor(G, v, w))if (!visited[w]) {//w为v未访问邻接顶点visit(w);//访问visited[w] = true;//标记EnQueue(Q, w);//进队}} }
-
无权最短路径问题
-
前驱子图,BFS生成树
DFS
-
递归是核心
-
void DFS(Graph G,int v){visit(v);visited[v]=true;for(w=FirstNeighbour(G,v);w>=0;w=NextNeighor(G,v,w)){if(!visited[w]){DFS(G,w);}} }
Topolpgical sort
-
拓扑排序是可以用来简单地判环的,若能则无环。
-
// deg是入度,在存图的时候需要录入数据 // A是排序后的数组 int deg[MAXN], A[MAXN]; bool toposort(int n) {int cnt = 0;queue<int> q;//若是priority_queue,则可以输出字典序最大/小拓扑序for (int i = 1; i <= n; ++i)if (deg[i] == 0)q.push(i);while (!q.empty()){int t = q.front();q.pop();A[cnt++] = t;for (auto to : edges[t]){deg[to]--;if (deg[to] == 0) // 出现了新的入度为0的点q.push(to);}}return cnt == n;// }
最小生成树
- [Kruskal][https://blog.csdn.net/yf_li123/article/details/75195549] , [Prim算法][https://blog.csdn.net/yf_li123/article/details/75148998]
单源最短路径
- Bellman-Ford
//检测有无负环
//spfa可以计算有负环 单元最短路径
void bellman_ford()
{memset(dist, 0x3f, sizeof dist);dist[1] = 0;for (int i = 0; i < k; i ++ ){memcpy(last, dist, sizeof dist);for (int j = 0; j < m; j ++ ){auto e = edges[j];dist[e.b] = min(dist[e.b], last[e.a] + e.c);}}
}
- [Topological-sort][https://blog.csdn.net/dragon8462_/article/details/119746134]
//只能有向无环图
-
Dijisktra
[Dijkstra算法介绍及其优先队列优化和斐波那契堆优化][https://blog.csdn.net/qq_33903332/article/details/116095232]
//
int dijkstra()
{// 初始化, 一号点到起点的距离为0, 其他点到起点的距离为正无穷memset(dist, 0x3f, sizeof dist); dist[1] = 0;for(int i = 0; i < n -1; i ++) // n - 1迭代{int t = -1;// 找到未加到 st 集合的最短距离for(int j = 1; j <= n ; j ++)if( !st[j] && (t == -1 || dist[t] > dist[j]) )t = j;// 将t点加入到集合st[t] = true;// 更新从t出去的所有的边,他组成的路径能不能更强其他点的距离for(int j = 1; j <= n; j++)dist[j] = min(dist[j], dist[t] + w[t][j]); }
}
//堆优化
const int N = 1e5+7;
const int INF = 0x3f3f3f3f;
struct Node{int to, w;
};//to指向另一端的结点, w表示边的长度
vector<Node> g[N];//邻接表存储图
int n, m, s;//n-结点数, m-边数, s-源点
int d[N];//记录源点s到图中所有结点的最短路
bool vis[N];//在Dijkstra算法中用于记录结点是否访问
void Dijkstra_2(int s) {memset(d, 0x3f, sizeof(d));//初始距离设为INF d[s] = 0;//源点到源点的距离为 0//使用优先队列实现堆, 默认以pair的first从大到小排序priority_queue< pair<int, int> > q;q.push(make_pair(0, s));//源点放入堆中 while (!q.empty()) {pair<int, int> t = q.top(); q.pop();int from = t.second;if (vis[from]) continue;//跳过已经访问过的结点 vis[from] = true;//以该点为中间结点更新最短路径 for (int i = 0; i < g[from].size(); i++) {int to = g[from][i].to;int w = g[from][i].w;if (d[to] > d[from] + w) {d[to] = d[from] + w;if (vis[to] == false) {//first以负数存储, d小的反而大, 在堆顶 q.push(make_pair(-d[to], to));}}}}
}
所有点对最短路径
-
Dijisktra
跑n遍(不带负权)-Greedy -
Floyd-Warshall
-DP (假设权重可以为负,但不能有权重为负的环路。)d i j k d_{ij}^k dijk为从结点 $i $到 j j j 的所有中间结点全部取自集合 { 1 , 2 , . . . , k } \{1,2,...,k\} {1,2,...,k}的一条最短路径的权重。
当 k = 0 k = 0 k=0时,也就是从结点 $i $到 j j j 的路径上不包括任何结点。这样路径上只有 ( i , j ) (i,j) (i,j)这一条边,此时 d i j 0 = w ( i , j ) d_{ij}^0 = w(i,j) dij0=w(i,j)。
当 k ⩾ 1 k \geqslant 1 k⩾1时,又可以分为两种情况:
- 结点 $i $到 j j j 的最短路径 p p p,没有经过结点 k k k,此时 d i j k = d i j k − 1 d_{ij}^k = d_{ij}^{k-1} dijk=dijk−1。
- 结点 $i $到 j j j 的最短路径 p p p,经过结点了 k k k, d i j k = d i k k − 1 + d k j k − 1 d_{ij}^k = d_{ik}^{k-1} +d_{kj}^{k-1} dijk=dikk−1+dkjk−1。
D
$d_{ij}^k= \begin{cases} w(i,j)& k=0\ min{d_{ij}^{k-1}, d_{ik}^{k-1} + d_{kj}^{k-1} } & k\geqslant 1\ \end{cases}\$
PI(前驱矩阵)
$\pi_{ij}^k= \begin{cases} \pi_{ij}^{k-1} & d_{ij}^{k-1} \leqslant d_{ik}^{k-1} + d_{kj}^{k-1}\ \pi_{kj}^{k-1} & d_{ij}^{k-1} \gt d_{ik}^{k-1} + d_{kj}^{k-1}\ \end{cases}\$
FLOYD-WARSHALL(W)n = W.rowsD0 = Wlet P = n x n martix initialized with nil//前驱矩阵for i = 1 to nfor j = 1 to nif i != j and D[i, j] < ∞P[i, j] = ifor k = 1 to nDk = new n x n matrix //可以直接用两个矩阵颠倒for i=1 to nfor j= 1 to nD[ij] = min(Dk-1[ij], Dk-1[ik] + Dk-1[kj])
$$D^0 = \begin{bmatrix} 0 & 3 & 8 & \infty & -4 \ \infty & 0 & \infty & 1 & 7 \ \infty & 4 & 0 & \infty & \infty \ 2 & \infty & -5 & 0 & \infty \ \infty & \infty & \infty & 6 & 0 \ \end{bmatrix} P^0 = \begin{bmatrix} NIL & 1 & 1 & NIL & 1 \ NIL & NIL & NIL & 2 & 2 \ NIL & 3 & NIL & NIL & NIL \ 4 & NIL & 4 & NIL & NIL \ NIL & NIL & NIL & 5 & NIL \ \end{bmatrix}\ D^1 = \begin{bmatrix} 0 & 3 & 8 & \infty & -4 \ \infty & 0 & \infty & 1 & 7 \ \infty & 4 & 0 & \infty & \infty \ 2 & 5 & -5 & 0 & -2 \ \infty & \infty & \infty & 6 & 0 \ \end{bmatrix} P^1 = \begin{bmatrix} NIL & 1 & 1 & NIL & 1 \ NIL & NIL & NIL & 2 & 2 \ NIL & 3 & NIL & NIL & NIL \ 4 & 1 & 4 & NIL & 1 \ NIL & NIL & NIL & 5 & NIL \ \end{bmatrix}\ D^2 = \begin{bmatrix} 0 & 3 & 8 & 4 & -4 \ \infty & 0 & \infty & 1 & 7 \ \infty & 4 & 0 & 5 & 11 \ 2 & 5 & -5 & 0 & -2 \ \infty & \infty & \infty & 6 & 0 \ \end{bmatrix} P^2 = \begin{bmatrix} NIL & 1 & 1 & 2 & 1 \ NIL & NIL & NIL & 2 & 2 \ NIL & 3 & NIL & 2 & 2 \ 4 & 1 & 4 & NIL & 1 \ NIL & NIL & NIL & 5 & NIL \ \end{bmatrix}\ D^3 = \begin{bmatrix} 0 & 3 & 8 & 4 & -4 \ \infty & 0 & \infty & 1 & 7 \ \infty & 4 & 0 & 5 & 11 \ 2 & 5 & -5 & 0 & -2 \ \infty & \infty & \infty & 6 & 0 \ \end{bmatrix} P^3 = \begin{bmatrix} NIL & 1 & 1 & 2 & 1 \ NIL & NIL & NIL & 2 & 2 \ NIL & 3 & NIL & 2 & 2 \ 4 & 3 & 4 & NIL & 1 \ NIL & NIL & NIL & 5 & NIL \ \end{bmatrix}\ D^4 = \begin{bmatrix} 0 & 3 & -1 & 4 & -4 \ 3 & 0 & -4 & 1 & -1 \ 7 & 4 & 0 & 5 & 3 \ 2 & -1 & -5 & 0 & -2 \ 8 & 5 & 1 & 6 & 0 \ \end{bmatrix} P^4 = \begin{bmatrix} NIL & 1 & 4 & 2 & 1 \ 4 & NIL & 4 & 2 & 1 \ 4 & 3 & NIL & 2 & 1 \ 4 & 3 & 4 & NIL & 1 \ 4 & 3 & 4 & 5 & NIL \ \end{bmatrix}\ D^5 = \begin{bmatrix} 0 & 1 & -3 & 2 & -4 \ 3 & 0 & -4 & 1 & -1 \ 7 & 4 & 0 & 5 & 3 \ 2 & -1 & -5 & 0 & -2 \ 8 & 5 & 1 & 6 & 0 \ \end{bmatrix} P^5 = \begin{bmatrix} NIL & 3 & 4 & 5 & 1 \ 4 & NIL & 4 & 2 & 1 \ 4 & 3 & NIL & 2 & 1 \ 4 & 3 & 4 & NIL & 1 \ 4 & 3 & 4 & 5 & NIL \ \end{bmatrix}\\$$
csdn好像不支持这么长的公式
可以参考算法导论或者下面的图片
最大流(流网络的最大容量问题,最小分割问题
参考:https://zhuanlan.zhihu.com/p/356840694
#include <queue>
#include <stdio.h>
#include <cstring>
#define INF 2147483467
using namespace std;
using ll = long long;const int maxn = 520010, maxm = 520010;
int n, m, s, t;struct Edge{ll to, next, weight;
};
Edge edges[maxm];
int edge_cnt = 1, head[maxn], cur[maxn];void add(int x,int y,int w){edges[++edge_cnt].next = head[x];edges[edge_cnt].to = y;edges[edge_cnt].weight = w;head[x] = edge_cnt;
}int level[maxn];
bool bfs(){memset(level, 0, sizeof(level));memcpy(cur, head, sizeof(head));queue<int> q;q.push(s);level[s] = 1;while (!q.empty()){int u = q.front();q.pop();for (int i = head[u]; i != 0; i = edges[i].next){ll v = edges[i].to, flow = edges[i].weight;if (flow > 0 && level[v] == 0){level[v] = level[u] + 1;q.push(v);}} }return (level[t] != 0);
}int dfs(int p = s, int cur_flow = INF){if (p == t) return cur_flow;ll ret = 0;for (int i = cur[p]; i != 0; i = edges[i].next){cur[p] = i;ll v = edges[i].to, vol = edges[i].weight;if (level[v] == level[p] + 1 && vol > 0){int f = dfs(v, min(cur_flow - ret, vol));edges[i].weight -= f;edges[i^1].weight += f;ret += f;if (ret == cur_flow) return ret;}}return ret;
}ll dinic(){ll max_flow = 0;while (bfs()){max_flow += dfs();}return max_flow;
}int main(){scanf("%d %d %d %d", &n, &m, &s, &t);for (int i = 1; i <= m ; ++i){int x, y, w;scanf("%d %d %d", &x, &y, &w);add(x, y, w);add(y, x, 0);}printf("%lld", dinic());return 0;
}
相关文章:
算法设计与分析-图算法小结BFS/DFS/Topologic/Dijkstra/Floyd/最大流
图 注:CSDN貌似不支持较长公式,可以复制到Markdown编辑器查看 图的表示 邻接矩阵 空间复杂度 Θ ( V 2 ) Θ(V^2) Θ(V2)邻接链表 空间复杂度 Θ ( V E ) Θ(VE) Θ(VE) BFS 邻接链表 时间复杂度 Θ ( V E ) Θ(VE) Θ(VE) void BFS(Graph G, int v) {//…...
CentOS 8 安装指定版本ansible
背景:想要练习ansible使用,用于面试,结果使用centos 8 的yum安装失败,提示版本不兼容(指的是python版本),故而使用python来安装指定版本的ansible,特此记录 环境:win11虚…...
策略模式(及案例)
策略模式 1.策略接口 定义一组算法或操作的通用接口,通常是一个抽象类或接口。该接口声明了策略类所必须实现的方法。 示例: class Strategy {doOperation() {} }2.具体策略 实现策略接口,提供具体的算法实现。每个具体策略类负责处理一…...
苹果CMS超级播放器专业版无授权全开源,附带安装教程
源码介绍 超级播放器专业版v1.0.8,内置六大主流播放器,支持各种格式的视频播放,支持主要功能在每一个播放器内核中都相同效果。 搭建教程 1.不兼容IE浏览器 2.php版本推荐7.4 支持7.1~7.4 3.框架引入不支持同时引入多个播放器 json对接教…...
项目记录:利用Redis实现缓存以提升查询效率
一、概述 当我们查询所有数据时,如果缓存中没有,则去数据库查询,如果有,直接查缓存的数据就行。注意定期更新缓存数据。 二、主体代码 private static final String ROOM_SCHEDULES_HASH "RoomSchedules";Overridepu…...
腾讯云16核32G28M轻量服务器CPU流量性能测评
腾讯云轻量16核32G28M服务器28M公网带宽下载速度峰值可达3584KB/s,折合3.5M/秒,系统盘为380GB SSD盘,6000GB月流量,折合每天200GB流量。腾讯云百科txybk.com来详细说下腾讯云轻量应用服务器16核32G28M配置性能、CPU主频型号、公网…...
【并发设计模式】聊聊等待唤醒机制的规范实现
在多线程编程中,其实就是分工、协作、互斥。在很多场景中,比如A执行的过程中需要同步等待另外一个线程处理的结果,这种方式下,就是一种等待唤醒的机制。本篇我们来讲述等待唤醒机制的三种实现,以及对应的应用场景。 G…...
CentOS:docker同一容器间通信
docker同一容器中不同服务以别名访问 1、创建bridge网络 docker network create testnet 2、查看Docker网络 docker network ls 3、运行容器连接到testnet网络 使用方法:docker run -it --name <容器名> —network --network-alias <网络别名> <…...
数据治理:释放数据价值的关键
随着数字化时代的到来,数据已成为组织和企业最重要的资产之一。然而,数据的快速增长和复杂性也给数据管理带来了巨大的挑战。为了确保数据的质量、安全性和合规性,数据治理已成为组织和企业必须面对的重要问题。数据治理是数据要素市场建设的…...
新手快速上手掌握基础排序<一>
听说看到日落金山的人,接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧 引言 从基础的两数交换排序,三四个数排序输出,到学习入门级的排序方法,如冒泡法,选择法,再学…...
2023年03月21日_chatgpt宕机事件的简单回顾
你能想象吗 ChatGPT挂了 昨天半夜呢 来自全球各地的用户纷纷发现 ChatGPT的网站弹出了报错警告的信息 然后立即就无法使用了 即使是有特权的plus账户也未能幸免 一时之间呢 chatgptdown的话题在Twitter刷屏 不少重度的用户表示很着急 有的用户说呢没了ChatGPT 这工作…...
RK3568测试tdd
RK3568测试tdd 一、门禁取包二、烧录三、跑tdd用例四、查看结果参考资料 一、门禁取包 右键复制链接,粘贴下载;解压到文件夹; 二、烧录 双击\windows\RKDevTool.exe打开烧写工具,工具界面击烧写步骤如图所示: 推荐…...
机器学习系列13:通过随机森林获取特征重要性
我们已经知道通过 L1 正则化和 SBS 算法可以用来做特征选择。 我们还可以通过随机森林从数据集中选择相关的特征。随机森林里面包含了多棵决策树,我们可以通过计算特征在每棵决策树决策过程中所产生的的信息增益平均值来衡量该特征的重要性。 你可能需要参考&…...
flink中值得监控的几个指标
背景 为了维持flink的正常运行,对flink的日常监控就变得很重要,本文我们就来看一下flink中要监控的几个重要的指标 重要的监控指标 1.算子的处理速度的指标:numRecordsInPerSecond/numRecordsOutPerSecond,这有助于你了解到算子的是否正在…...
最优化方法Python计算:无约束优化应用——逻辑分类模型
逻辑回归模型更多地用于如下例所示判断或分类场景。 例1 某银行的贷款用户数据如下表: 欠款(元)收入(元)是否逾期17000800Yes220002500No350003000Yes440004000No520003800No 显然,客户是否逾期ÿ…...
springboot定时执行某个任务
springboot定时执行某个任务 要定时执行的方法加上Schedule注解 括号内跟 cron表达式 “ 30 15 10 * * ?” 代表秒 分 时 日 月 周几 启动类上加上EnableScheduling 注释...
Java EE Servlet之Servlet API详解
文章目录 1. HttpServlet1.1 核心方法 2. HttpServletRequest3. HttpServletResponse 接下来我们来学习 Servlet API 里面的详细情况 1. HttpServlet 写一个 Servlet 代码,都是要继承这个类,重写里面的方法 Servlet 这里的代码,只需要继承…...
neo4j运维管理
管理数据库 概念 Neo4j 5(从v4.0),可以同时创建和使用多个活动数据库。 DBMS Neo4j是一个数据库管理系统(DBMS),能够管理多个数据库。DBMS可以管理一个独立的服务器,也可以管理集群中的一组服务器。 实例 Neo4j实例是运行Neo4j服务器代…...
【MYSQL】-函数
💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …...
传统船检已经过时?AR智慧船检来助力!!
想象一下,在茫茫大海中,一艘巨型货轮正缓缓驶过。船上的工程师戴着一副先进的AR眼镜,他们不再需要反复翻阅厚重的手册,一切所需信息都实时显示在眼前。这不是科幻电影的场景,而是智慧船检技术带来的现实变革。那么问题…...
JAVA进化史: JDK11特性及说明
JDK 11(Java Development Kit 11)是Java平台的一个版本,于2018年9月发布。这个版本引入了一些新特性和改进,以下是其中一些主要特性。 HTTP Client(标准化) JDK 11引入了一个新的HTTP客户端,用…...
模型 安索夫矩阵
本系列文章 主要是 分享模型,涉及各个领域,重在提升认知。产品市场战略。 1 安索夫矩阵的应用 1.1 江小白的多样化经营策略 使用安索夫矩阵来分析江小白市场战略。具体如下: 根据安索夫矩阵,江小白的现有产品是其白酒产品&…...
性能手机新标杆,一加 Ace 3 发布会定档 1 月 4 日
12 月 27 日,一加宣布将于 1 月 4 日发布新品一加 Ace 3。一加 Ace 系列秉持「产品力优先」理念,从一加 Ace 2、一加 Ace 2V 到一加 Ace 2 Pro,款款都是现象级爆品,得到了广大用户的认可与支持。作为一加 2024 开年之作࿰…...
Vue 框架前导:详解 Ajax
Ajax Ajax 是异步的 JavaScript 和 XML。简单来说就是使用 XMLHttpRequest 对象和服务器通信。可以使用 JSON、XML、HTML 和 text 文本格式来发送和接收数据。具有异步的特性,可在不刷新页面的情况下实现和服务器的通信,交换数据或者更新页面 01. 体验 A…...
3分钟快速安装 ClickHouse、配置服务、设置密码和远程登录以及修改数据目录
下面是一个完整的 ClickHouse 安装和配置流程,包括安装 ClickHouse、配置服务、设置密码和远程登录以及修改数据目录。 安装 ClickHouse 安装 YUM 工具包: sudo yum install -y yum-utils添加 ClickHouse YUM 仓库: sudo yum-config-manager…...
PHP8使用PDO对象增删改查MySql数据库
PDO简介 PDO(PHP Data Objects)是一个PHP扩展,它提供了一个数据库访问层,允许开发人员使用统一的接口访问各种数据库。PDO 提供了一种用于执行查询和获取结果的简单而一致的API。 以下是PDO的一些主要特点: 统一接口…...
证明:切线垂直于半径
证明: 切线垂直于过切点的半径。 下面是网上最简单的证明方法。 证明: 利用反证法。 如下图所示,直线AB和圆O切于点A,假设OA 不垂直于 AB,而 O B ⊥ A B OB \perp AB OB⊥AB,则 ∠ O B A 90 \angle OB…...
普中STM32-PZ6806L开发板(STM32CubeMX创建项目并点亮LED灯)
简介 搭建一个用于驱动 STM32F103ZET6 GPIO点亮LED灯的任务;电路原理图 LED电路原理图 芯片引脚连接LED驱动引脚原理图 创建一个点亮LED灯的Keil 5项目 创建STM32CubeMX项目 New Project -> 单击 -> 芯片搜索STM32F103ZET6->双击创建 初始化时钟 调试设置 一…...
【Windows】共享文件夹拍照还原防火墙设置(入站,出站设置)---图文并茂详细讲解
目录 一 共享文件夹(两种形式) 1.1 普通共享与高级共享区别 1.2 使用 二 拍照还原 2.1 是什么 2.2 使用 三 防火墙设置(入栈,出站设置) 3.1 引入 3.2 入站出站设置 3.2.1入站出站含义 3.3入站设置 3.4安装jdk 3.5使用tomcat进行访…...
1.决策树
目录 1. 什么是决策树? 2. 决策树的原理 2.1 如何构建决策树? 2.2 构建决策树的数据算法 2.2.1 信息熵 2.2.2 ID3算法 2.2.2.1 信息的定义 2.2.2.2 信息增益 2.2.2.3 ID3算法举例 2.2.2.4 ID3算法优缺点 2.2.3 C4.5算法 2.2.3.1 C4.5算法举例 2.2.4 CART算法 2.2.4…...
wordpress评论推广/太原优化排名推广
模板介绍 医疗保健服务宣传和医疗咨询服务PPT模板-优页文档。一套,疫情防护,幻灯片模板,内含青色,蓝色多种配色,风格设计,动态播放效果,精美实用。 希望下面这份精美的PPT模板能给你带来帮助,温馨提示:本…...
恐怖小说网站怎么做/池州网站seo
技术背景 笔者在执行一个Jax的任务中,又发现了一个奇怪的问题,就是明明只分配了很小的矩阵空间,但是在多次的任务执行之后,显存突然就爆了。而且此时已经按照Jax的官方说明配置了 XLA_PYTHON_CLIENT_PREALLOCATE 这个参数为 fals…...
做网站在线视频如何添加/app推广30元一单
文章目录基于阈值的分割方法Otsu阈值分割自适应阈值分割最大熵阈值分割法迭代阈值分割基于边缘的分割方法基于区域的分割方法基于图论的分割方法基于聚类的分割方法基于能量泛函的分割方法曲线演化理论snake方法水平集(LevelSet)Active Contours Without Edges能量函数用水平集…...
网站建设相关关键词/武汉seo网络营销推广
发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967 课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产…...
如何建设和优化一个网站/百度开户返点
相比LCS的组策略,OCS增加了很多功能。做为IT人员管理和实施人员统一部署的好助手,它的一些功能非常有用,比如保存用户密码、设置通讯薄URL和限制用户添加数量等,有效的扩展和补充了了OCS控制台的现有功能而不必再做二次开发。策略…...
厦门微信网站建/今天新闻
如图所示: 如果此时给.div1添加属性 position属性是 .div1就会消失不见 那么此时就必须显示给.div1加上宽度,才能显示出来结果如图所示:转载于:https://blog.51cto.com/11871779/2072041...