当前位置: 首页 > news >正文

2.1.1BFS中的Flood Fill和最短路模型

1.池塘计数

农夫约翰有一片 N ∗ M N∗M NM 的矩形土地。

最近,由于降雨的原因,部分土地被水淹没了。

现在用一个字符矩阵来表示他的土地。

每个单元格内,如果包含雨水,则用”W”表示,如果不含雨水,则用”.”表示。

现在,约翰想知道他的土地中形成了多少片池塘。

每组相连的积水单元格集合可以看作是一片池塘。

每个单元格视为与其上、下、左、右、左上、右上、左下、右下八个邻近单元格相连。

请你输出共有多少片池塘,即矩阵中共有多少片相连的”W”块。

输入格式
第一行包含两个整数 N N N M M M

接下来 N N N行,每行包含 M M M个字符,字符为”W”或”.”,用以表示矩形土地的积水状况,字符之间没有空格。

输出格式
输出一个整数,表示池塘数目。

数据范围
1 ≤ N , M ≤ 1000 1≤N,M≤1000 1N,M1000

输入样例:

10 12
W........WW.
.WWW.....WWW
....WW...WW.
.........WW.
.........W..
..W......W..
.W.W.....WW.
W.W.W.....W.
.W.W......W.
..W.......W.

输出样例:

3
1.1题解

在这里插入图片描述

在这里插入图片描述
bfs

遍历单元格,同时用一个标记数组记录(标记)每个单元格是否被访问过。

在遍历单元格过程中,如果当前单元格是水,并且没有被访问过,水域数量+1,并且对该单元格进行bfs。

bfs 函数:从当前单元格开始,访问并标记和他同一片水域的单元格。

1.2代码实现
#include<iostream>
#include<algorithm>
#include<cstring>#define x first
#define y secondusing namespace std;//储存下标
typedef pair<int,int> PII;
const int N = 1010,M = N * N;int n,m;
char g[N][N];
PII q[M];
bool st[N][N]; //判重数组void bfs(int sx,int sy)
{//模拟队列int hh = 0,tt = 0;q[0] = {sx,sy};st[sx][sy] = true;while(hh <= tt){PII t = q[hh++];//取出队头//判断8连通,一般使用双重循环for(int i = t.x - 1;i <= t.x + 1;i++)for(int j = t.y - 1;j <= t.y + 1;j++){if(i == t.x && j == t.y)    continue;if(i < 0 || i >= n || j < 0 || j >= m)  continue;if(g[i][j] == '.' || st[i][j])  continue;q[++ tt] = {i,j};st[i][j] = true;}}
}int main()
{scanf("%d%d",&n,&m);for(int i = 0;i < n;i++)    scanf("%s",g[i]);int cnt = 0;for(int i = 0;i < n;i++)    for(int j = 0;j < m;j++)if(g[i][j] == 'W' && !st[i][j]){bfs(i,j);cnt++;}printf("%d",cnt);return 0;
}

2.城堡问题

在这里插入图片描述
图1是一个城堡的地形图。

请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。

城堡被分割成 m ∗ n m∗n mn个方格区域,每个方格区域可以有 0 4 0~4 0 4面墙。

注意:墙体厚度忽略不计。

输入格式
第一行包含两个整数 m m m n n n,分别表示城堡南北方向的长度和东西方向的长度。

接下来 m m m 行,每行包含 n n n个整数,每个整数都表示平面图对应位置的方块的墙的特征。

每个方块中墙的特征由数字 P P P来描述,我们用 1 1 1表示西墙, 2 2 2表示北墙, 4 4 4表示东墙, 8 8 8表示南墙, P P P为该方块包含墙的数字之和。

例如,如果一个方块的 P P P 3 3 3,则 3 = 1 + 2 3 = 1 + 2 3=1+2,该方块包含西墙和北墙。

城堡的内墙被计算两次,方块 ( 1 , 1 ) (1,1) (1,1)的南墙同时也是方块 ( 2 , 1 ) (2,1) (2,1)的北墙。

输入的数据保证城堡至少有两个房间。

输出格式
共两行,第一行输出房间总数,第二行输出最大房间的面积(方块数)。

数据范围
1 ≤ m , n ≤ 50 , 1≤m,n≤50, 1m,n50,
0 ≤ P ≤ 15 0≤P≤15 0P15
输入样例:

4 7 
11 6 11 6 3 10 6 
7 9 6 13 5 15 5 
1 10 12 7 13 7 5 
13 11 10 8 10 12 13 

输出样例:

5
9
2.1题解

在这里插入图片描述
在这里插入图片描述
不过本题中:
西墙表示:1,北墙表示:2,东墙表示:4,南墙表示:8
可以看出依次是 2 0 , 2 1 , 2 2 , 2 3 2^{0},2^{1},2^{2},2^{3} 20,21,22,23
所以可以用二进制来表示墙的分布情况.
例如: ( 0101 ) 2 (0101)_{2} (0101)2表示南,北边无墙,东,西边有墙

2.2代码实现
#include<iostream>
#include<algorithm>
#include<cstring>#define x first
#define y secondusing namespace std;typedef pair<int,int> PII;const int N = 55,M = N * N;int n,m;
int g[N][N];
PII q[M];
bool st[N][N];int bfs(int sx,int sy)
{//标记一下方向int dx[4] = {0,-1,0,1},dy[4] = {-1,0,1,0};int hh = 0,tt = 0;int area = 0;q[0] = {sx,sy};st[sx][sy] = true;while(hh <= tt){PII t = q[hh++];area++;//遍历四个方向for(int i = 0; i < 4;i++){int a = t.x + dx[i],b = t.y + dy[i];if(a < 0 || a >= n || b < 0 || b >= m)  continue;if(st[a][b])    continue;if(g[t.x][t.y] >> i & 1)    continue;q[++ tt] = {a,b};st[a][b] = true;}}return area;
}int main()
{cin >> n >> m;for(int i = 0;i < n;i++)for(int j = 0;j < m;j++)cin >> g[i][j];int cnt = 0,area = 0;for(int i = 0;i < n;i++)for(int j = 0;j < m;j++)if(!st[i][j]){area = max(area,bfs(i,j));cnt++;}cout << cnt << endl;cout << area << endl;return 0;
}

3.山峰和山谷

FGD小朋友特别喜欢爬山,在爬山的时候他就在研究山峰和山谷。

为了能够对旅程有一个安排,他想知道山峰和山谷的数量。

给定一个地图,为FGD想要旅行的区域,地图被分为 n × n n×n n×n的网格,每个格子 ( i , j ) (i,j) (i,j) 的高度 w ( i , j ) w(i,j) w(i,j)是给定的。

若两个格子有公共顶点,那么它们就是相邻的格子,如与 ( i , j ) (i,j) (i,j)相邻的格子有 ( i − 1 , j − 1 ) , ( i − 1 , j ) , ( i − 1 , j + 1 ) , ( i , j − 1 ) , ( i , j + 1 ) , ( i + 1 , j − 1 ) , ( i + 1 , j ) , ( i + 1 , j + 1 ) (i−1,j−1),(i−1,j),(i−1,j+1),(i,j−1),(i,j+1),(i+1,j−1),(i+1,j),(i+1,j+1) (i1,j1),(i1,j),(i1,j+1),(i,j1),(i,j+1),(i+1,j1),(i+1,j),(i+1,j+1)

我们定义一个格子的集合 S S S为山峰(山谷)当且仅当:

  1. S S S 的所有格子都有相同的高度。
  2. S S S的所有格子都连通。
  3. 对于 s s s属于 S S S,与 s s s相邻的 s ′ s^{'} s不属于 S S S,都有 w s > w s ′ w_{s}>w_{s^{'}} ws>ws(山峰),或者 w s < w s ′ w_{s}<w_{s^{'}} ws<ws(山谷)。
  4. 如果周围不存在相邻区域,则同时将其视为山峰和山谷。

你的任务是,对于给定的地图,求出山峰和山谷的数量,如果所有格子都有相同的高度,那么整个地图即是山峰,又是山谷。

输入格式
第一行包含一个正整数 n n n,表示地图的大小。

接下来一个 n × n n×n n×n 的矩阵,表示地图上每个格子的高度 w w w

输出格式
共一行,包含两个整数,表示山峰和山谷的数量。

数据范围
1 ≤ n ≤ 1000 , 1≤n≤1000, 1n1000,
0 ≤ w ≤ 1 0 9 0≤w≤10^{9} 0w109

输入样例1:

5
8 8 8 7 7
7 7 8 8 7
7 7 7 7 7
7 8 8 7 8
7 8 8 8 8

输出样例1:

2 1

输入样例2:

5
5 7 8 3 1
5 5 7 6 6
6 6 6 2 8
5 7 2 5 8
7 1 0 1 7

输出样例2:

3 3

样例解释
样例1:
1.png

样例2:

2.png
3.1题解

在这里插入图片描述

3.2代码
#include<cstring>
#include<iostream>
#include<algorithm>#define x first
#define y secondusing namespace std;typedef pair<int,int> PII;const int N = 1010,M = N * N;int n;
int h[N][N];
PII q[M];
bool st[N][N];//引用,在此传进去的参数是引用
void bfs(int sx,int sy,bool& has_higher,bool& has_lower)
{int hh = 0,tt = 0;q[0] = {sx,sy};st[sx][sy] = true;while(hh <= tt){PII t = q[hh++];//八连接,使用双重循环for(int i = t.x - 1;i <= t.x + 1;i++)for(int j = t.y - 1;j <= t.y + 1;j++){if(i == t.x && j == t.y) continue;//把中间格子扣掉if(i < 0 || i >= n || j < 0 || j >= n)  continue;if(h[i][j] != h[t.x][t.y])  //山脉的边界{if(h[i][j] > h[t.x][t.y])   has_higher = true;else has_lower = true;}else if(!st[i][j]){q[++ tt] = {i,j};st[i][j] = true;}}}
}
int main()
{scanf("%d",&n);for(int i = 0;i < n;i++)for(int j = 0;j < n;j++)scanf("%d",&h[i][j]);int peak = 0,valley = 0;for(int i = 0;i < n;i++)for(int j = 0;j < n;j++)if(!st[i][j]){bool has_higher = false,has_lower = false;//使用传引用的方式bfs(i,j,has_higher,has_lower);if(!has_higher) peak++;//注意在此不能单纯的使用else,因为有可能即是山峰又是山谷if(!has_lower)  valley++;}printf("%d %d\n",peak,valley);return 0;
}

4.迷宫问题

给定一个 n × n n×n n×n 的二维数组,如下所示:

int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};

它表示一个迷宫,其中的 1 1 1表示墙壁, 0 0 0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。

数据保证至少存在一条从左上角走到右下角的路径。

输入格式
第一行包含整数 n n n

接下来 n n n行,每行包含 n n n个整数 0 0 0 1 1 1,表示迷宫。

输出格式
输出从左上角到右下角的最短路线,如果答案不唯一,输出任意一条路径均可。

按顺序,每行输出一个路径中经过的单元格的坐标,左上角坐标为 ( 0 , 0 ) (0,0) (0,0),右下角坐标为 ( n − 1 , n − 1 ) (n−1,n−1) (n1,n1)

数据范围
0 ≤ n ≤ 1000 0≤n≤1000 0n1000
输入样例:

5
0 1 0 0 0
0 1 0 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0

输出样例:

0 0
1 0
2 0
2 1
2 2
2 3
2 4
3 4
4 4
4.1题解

这道题是844题的扩展 我们这道题是想让我们将最短的路进行输出
我们的做法是用 p r e [ ] [ ] pre[][] pre[][]数组来记录当前结点前驱结点是哪个点以便我们输出它最短路径的坐标点 我们倒着寻找最短路径从 ( n − 1 , n − 1 ) (n-1,n-1) (n1,n1)开始
这样的话更新完 p r e pre pre数组 ( 0 , 0 ) (0,0) (0,0)就有它的前驱结点了 这样就能正着将 p r e pre pre数组中输出对应的路径了
关键和844的不同点就是如何维护 p r e pre pre这个记录路径的数组 以及你如何将这个数组数组也是有学问的

4.2代码
#include<cstring>
#include<algorithm>
#include<iostream>#define x first
#define y secondusing namespace std;typedef pair<int,int> PII;const int N = 1010,M = N * N;int n;
int g[N][N];
PII q[M];
PII pre[N][N];  //记录路径void bfs(int sx,int sy)
{//四个方向,上右下左int dx[4] = {-1,0,1,0},dy[4] = {0,1,0,-1};int hh = 0,tt = 0;q[0] = {sx,sy};memset(pre,-1,sizeof pre);pre[sx][sy] = {0,0};while(hh <= tt){PII t = q[hh ++];for(int i = 0;i < 4;i++){int a = t.x + dx[i],b = t.y + dy[i];if(a < 0 || a >= n || b < 0 || b >= n)  continue;if(g[a][b]) continue;if(pre[a][b].x != -1)   continue;q[++ tt] = {a,b};pre[a][b] = t;}}
}
int main()
{scanf("%d",&n);for(int i = 0;i < n;i++)for(int j = 0;j < n;j++)scanf("%d",&g[i][j]);//反向搜        bfs(n - 1,n - 1);PII end(0,0);while(true){printf("%d %d\n",end.x,end.y);if(end.x == n - 1 && end.y == n - 1)    break;end = pre[end.x][end.y];}return 0;}

5.武士风度的牛

农民 J o h n John John 有很多牛,他想交易其中一头被 D o n Don Don 称为 T h e K n i g h t The Knight TheKnight 的牛。

这头牛有一个独一无二的超能力,在农场里像 K n i g h t Knight Knight 一样地跳(就是我们熟悉的象棋中马的走法)。

虽然这头神奇的牛不能跳到树上和石头上,但是它可以在牧场上随意跳,我们把牧场用一个 x , y x,y xy的坐标图来表示。

这头神奇的牛像其它牛一样喜欢吃草,给你一张地图,上面标注了 T h e K n i g h t The Knight TheKnight 的开始位置,树、灌木、石头以及其它障碍的位置,除此之外还有一捆草。

现在你的任务是,确定 T h e K n i g h t The Knight TheKnight 要想吃到草,至少需要跳多少次。

T h e K n i g h t The Knight TheKnight 的位置用 K 来标记,障碍的位置用 * 来标记,草的位置用 H 来标记。

这里有一个地图的例子:

             11 | . . . . . . . . . .10 | . . . . * . . . . . 9 | . . . . . . . . . . 8 | . . . * . * . . . . 7 | . . . . . . . * . . 6 | . . * . . * . . . H 5 | * . . . . . . . . . 4 | . . . * . . . * . . 3 | . K . . . . . . . . 2 | . . . * . . . . . * 1 | . . * . . . . * . . 0 ----------------------1 0 1 2 3 4 5 6 7 8 9 0 

T h e K n i g h t The Knight TheKnight 可以按照下图中的 A , B , C , D … A,B,C,D… A,B,C,D这条路径用 5 5 5次跳到草的地方(有可能其它路线的长度也是 5 5 5):

             11 | . . . . . . . . . .10 | . . . . * . . . . .9 | . . . . . . . . . .8 | . . . * . * . . . .7 | . . . . . . . * . .6 | . . * . . * . . . F<5 | * . B . . . . . . .4 | . . . * C . . * E .3 | .>A . . . . D . . .2 | . . . * . . . . . *1 | . . * . . . . * . .0 ----------------------10 1 2 3 4 5 6 7 8 9 0

注意: 数据保证一定有解。

输入格式
1 1 1 行: 两个数,表示农场的列数 C C C 和行数 R R R

2.. R + 1 2..R+1 2..R+1行: 每行一个由 C C C 个字符组成的字符串,共同描绘出牧场地图。

输出格式
一个整数,表示跳跃的最小次数。

数据范围
1 ≤ R , C ≤ 150 1≤R,C≤150 1R,C150
输入样例:

10 11
..........
....*.....
..........
...*.*....
.......*..
..*..*...H
*.........
...*...*..
.K........
...*.....*
..*....*..

输出样例:

5
5.1题解

广度优先搜索
一般来说走迷宫,最少步数这种题目,都是广度优先搜索.记住读入上面的有梗,然后修改一下一般走路方式就好了.

5.2代码实现
#include<cstring>
#include<iostream>
#include<algorithm>#define x first
#define y secondusing namespace std;typedef pair<int,int> PII;
const int N = 155,M = N * N;int n,m;
char g[N][N];
PII q[M];
int dist[N][N];//存储最短路int bfs()
{int dx[8] = {-2,-1,1,2,2,1,-1,-2};int dy[8] = {1,2,2,1,-1,-2,-2,-1};int sx,sy;//寻找起点for(int i = 0;i < n;i++)for(int j = 0;j < m;j++)if(g[i][j] == 'K')sx = i,sy = j;int hh = 0,tt = 0;q[0] = {sx,sy};memset(dist,-1,sizeof dist);dist[sx][sy] = 0;while(hh <= tt){auto t = q[hh ++];for(int i = 0;i < 8;i++){int a = t.x + dx[i], b = t.y + dy[i];if(a < 0 || a >= n || b < 0 || b >= m) continue;//不在范围内if(g[a][b] == '*')  continue;//是障碍物if(dist[a][b] != -1)    continue;//不是第一次被访问if(g[a][b] == 'H')  return dist[t.x][t.y] + 1;dist[a][b] = dist[t.x][t.y] + 1;q[++ tt] = {a,b};}}return -1;
}
int main()
{cin >> m >> n;for(int i = 0;i < n;i++)    cin >> g [i];cout << bfs() <<endl;return 0;}

6.抓住那头牛

农夫知道一头牛的位置,想要抓住它。

农夫和牛都位于数轴上,农夫起始位于点 N N N,牛位于点 K K K

农夫有两种移动方式:

  1. X X X移动到 X − 1 X−1 X1 X + 1 X+1 X+1,每次移动花费一分钟
  2. X X X 移动到 2 ∗ X 2∗X 2X,每次移动花费一分钟

假设牛没有意识到农夫的行动,站在原地不动。

农夫最少要花多少时间才能抓住牛?

输入格式
共一行,包含两个整数 N N N K K K

输出格式
输出一个整数,表示抓到牛所花费的最少时间。

数据范围
0 ≤ N , K ≤ 1 0 5 0≤N,K≤10^{5} 0N,K105
输入样例:

5 17

输出样例:

4
5.1题解

看完题目以后,农夫不就是向右移动{-1,1,当前位置}这三种情况吗,
于是就普通至极,至于范围的话,
如果 k = = 1 e 5 , n > 50000 k==1e^{5},n>50000 k==1e5,n>50000时,实际上最短步数一定只有两种情况:

  1. 如果 n − 50000 < k − n n-50000<k-n n50000<kn时,就会后退到 50000 50000 50000 ∗ 2 *2 2
  2. 否则就一直 + 1 +1 +1 k k k

范围就是 0 < = n < = 1 e 5 0<=n<=1e^{5} 0<=n<=1e5

5.2代码
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;const int N = 1e5 + 10;int n, k;
int q[N];
int dist[N];int bfs()
{memset(dist, -1, sizeof dist);dist[n] = 0;q[0] = n;int hh = 0, tt = 0;while (hh <= tt){int t = q[hh ++ ];if (t == k) return dist[k];if (t + 1 < N && dist[t + 1] == -1){dist[t + 1] = dist[t] + 1;q[ ++ tt] = t + 1;}if (t - 1 >= 0 && dist[t - 1] == -1){dist[t - 1] = dist[t] + 1;q[ ++ tt] = t - 1;}if (t * 2 < N && dist[t * 2] == -1){dist[t * 2] = dist[t] + 1;q[ ++ tt] = t * 2;}}return -1;
}int main()
{cin >> n >> k;cout << bfs() << endl;return 0;
}

相关文章:

2.1.1BFS中的Flood Fill和最短路模型

1.池塘计数 农夫约翰有一片 N ∗ M N∗M N∗M 的矩形土地。 最近&#xff0c;由于降雨的原因&#xff0c;部分土地被水淹没了。 现在用一个字符矩阵来表示他的土地。 每个单元格内&#xff0c;如果包含雨水&#xff0c;则用”W”表示&#xff0c;如果不含雨水&#xff0c;…...

Mysql 新增更新、删除新增、忽略

当主键或唯一键冲突时&#xff0c;Mysql可以进行更新、删除新增、忽略插入等操作。 1.更新 当主键或唯一键冲突时&#xff0c;可以指定更新内容。 INSERT INTO table_name (column_name, column_name, column_name) VALUES (column_value, column_value,column_value) ON DUPL…...

Node-模块系统的用法

题记 node.js模块系统的用法&#xff0c;以下是具体操作过程和代码 为了让Node.js的文件可以相互调用&#xff0c;Node.js提供了一个简单的模块系统。 模块是Node.js 应用程序的基本组成部分&#xff0c;文件和模块是一一对应的。 一个 Node.js 文件就是一个模块&#xff0c;这…...

XSS攻击(1), 测试XSS漏洞, 获取cookie

XSS漏洞, 测试XSS漏洞, 获取cookie 一, 概念: XSS(Cross-Site Scripting), 跨站攻击脚本, XSS漏洞发生在前端, 依赖于浏览器的解析引擎, 让前端执行攻击代码. XSS其实也算注入类的攻击, XSS代码注入需要有JavaScript编程基础. 二, 目的: XSS&#xff08;跨站脚本&#xff0…...

linux任务优先级

这篇笔记记录了linux任务&#xff08;指线程而非进程&#xff09;优先级相关的概念&#xff0c;以及用户态可以用来操作这些优先级的系统调用。 基本概念 调度策略 linux内核中的调度器为任务定义了调度策略&#xff0c;也叫调度类&#xff0c;每个任务同一时刻都有唯一的调…...

JVM内存模型概述

这里主要分为五大块&#xff0c;分别是&#xff1a;本地方法栈、方法区、java堆、程序计数器和java栈。其中重点是方法区、java堆和java栈。 下面就把各个区域的性质总结一下&#xff1a;&#xff08;说明&#xff0c;下面的只是结论&#xff0c;没有详细的对各个内存块进行详细…...

【JavaEE】CAS -- 多线程篇(7)

CAS 1. 什么是 CAS2. CAS 伪代码3. CAS 是怎么实现的4. CAS的应用4.1 实现原子类4.2 实现自旋锁 5. CAS 的 ABA 问题 1. 什么是 CAS CAS: 全称Compare and swap&#xff0c;字面意思:”比较并交换“能够比较和交换 某个寄存器中的值和内存中的值, 看是否相等, 如果相等, 则把另…...

18-spring 事务

文章目录 1. xml和注解配置方式的对象2.spring事务传播特性3. 注解事务的初始化流程4. 创建事务信息流程图5. 事务回滚流程图 1. xml和注解配置方式的对象 2.spring事务传播特性 事务传播行为类型说明PROPAGATION_REQUIRED如果当前没有事务&#xff0c;就新建一个事务&#xf…...

Qt窗体设计的布局

本文介绍Qt窗体的布局。 Qt窗体的布局分为手动布局和自动布局&#xff0c;手动布局即靠手工排布各控件的位置。而自动布局则是根据选择的布局类型自动按此类型排布各控件的位置&#xff0c;使用起来比较方便&#xff0c;本文主要介绍Qt的自动布局。 1.垂直布局 垂直布局就是…...

分布式锁 - 理论篇

一、为什么需要分布式锁 二、分布式锁实现 1.分布式锁演进 - 基本原理 我们可以同时去一个地方“占坑”&#xff0c;如果占到&#xff0c;就执行逻辑。否则就必须等待&#xff0c;直到释放锁。“占坑”可以去redis&#xff0c;可以去数据库&#xff0c;可以去任何大家都能访…...

复杂的菱形继承及菱形虚拟继承(详解)

复杂的菱形继承及菱形虚拟继承 复杂的菱形继承及菱形虚拟继承虚拟继承解决数据冗余和二义性的原理笔试面试题 复杂的菱形继承及菱形虚拟继承 单继承&#xff1a;一个子类只有一个直接父类时称这个继承关系为单继承 多继承&#xff1a;一个子类有两个或以上直接父类时称这个继…...

【快捷测试模型是否可以跑通】设置一张图片的张量形式,送入自己写的模型进行测试

文章目录 1. 1. import torch.nn as nn import torch from einops import rearrange, repeat from einops.layers.torch import Rearrange import torch.nn.functional as Fclass PreNorm(nn.Module):def __init__(self, dim, fn):super().__init__()self.norm nn.LayerNorm(…...

软考系列(系统架构师)- 2019年系统架构师软考案例分析考点

试题一 软件架构&#xff08;架构风格、质量属性&#xff09; 【问题1】&#xff08;13分&#xff09; 针对用户级别与折扣规则管理功能的架构设计问题&#xff0c;李工建议采用面向对象的架构风格&#xff0c;而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种…...

安防视频监控系统EasyCVR视频汇聚存储平台定制化开发:新增kafka配置

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…...

C++设计模式_08_Factory Method工厂方法模式

文章目录 1. “对象创建模式”模式1.1 典型模式 2. 动机&#xff08;Motivation&#xff09;3. 代码演示Factory Method工厂方法模式3.1 常规方法3.2 面向接口的编程3.2.1 FileSplitter1.cpp3.2.2 MainForm1.cpp 3.3 Factory Method工厂方法3.3.1 ISplitterFactory.cpp3.3.2 Ma…...

【TensorFlow1.X】系列学习笔记【基础一】

【TensorFlow1.X】系列学习笔记【基础一】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【基础一】前言线性回归非线性回归逻辑回归总结 前言 本篇博主将用最简洁的代码由浅入…...

Linux 基础操作手记三(内存篇)

Linux 基础操作手记三 释放内存虚拟机彻底无网络测试网速设置虚拟内存交换空间未使用虚拟机设置虚拟内存无法开机问题GParted - 分配内存系统盘扩容自己 释放内存 sync && echo 3 > /proc/sys/vm/drop_caches 虚拟机彻底无网络 还原默认设置&#xff0c;静静的等待…...

NodeJS的初使用,以及引入第三方插件和安装淘宝镜像的教程

NodeJs 命令 npm init -y 生成package.json文件npm i jquery --save–dev 开发依赖(jQuery后面还可以跟模块,可以有多个)npm i jquery --save 生产依赖npm i jquery --D 开发依赖npm uninstall jquery 卸载删除npm i 把删掉的模块,全部重新加载回来 1.介绍 1.什么是NodeJs?…...

Java读取文件的N种方法

1.概述 在这篇文章里&#xff0c; 我们将探索不同的方式从文件中读取数据。 首先&#xff0c; 学习通过标准的的Java类&#xff0c;从classpath、URL或者Jar中加载文件。 然后&#xff0c;学习通用BufferedReader, Scanner, StreamTokenizer, DataInputStream, SequenceInput…...

子类的构造与析构过程

一、简介 父类&#xff0c;也称基类&#xff0c;其构造方法和析构方法不能被继承&#xff1b; 子类&#xff0c;也称派生类&#xff0c;继承父类的方法和属性&#xff0c;但要加入新的构造和析构函数。 二、构造与析构过程 构造&#xff1a;先调用父类——>再调用子类 析构&…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...