【FLOOD FILL专题】【蓝桥杯备考训练】:扫雷、动态网格、走迷宫、画图、山峰和山谷【已更新完成】

目录

1、扫雷(Google Kickstart2014 Round C Problem A)

2、动态网格(Google Kickstart2015 Round D Problem A)

3、走迷宫(模板)

4、画图(第六次CCF计算机软件能力认证)

5、山峰和山谷(POI2007 & 《信息学奥赛一本通》)


1、扫雷(Google Kickstart2014 Round C Problem A)

扫雷是一种计算机游戏,在 20 世纪 80 年代开始流行,并且仍然包含在某些版本的 Microsoft Windows 操作系统中。

在这个问题中,你正在一个矩形网格上玩扫雷游戏。

最初网格内的所有单元格都呈未打开状态。

其中 M 个不同的单元格中隐藏着 M 个地雷。

其他单元格内不包含地雷。

你可以单击任何单元格将其打开。

如果你点击到的单元格中包含一个地雷,那么游戏就会判定失败。

如果你点击到的单元格内不含地雷,则单元格内将显示一个 0 到 8 之间的数字(包括 0 和 8),这对应于该单元格的所有相邻单元格中包含地雷的单元格的数量。

如果两个单元格共享一个角或边,则它们是相邻单元格。

另外,如果某个单元格被打开时显示数字 0,那么它的所有相邻单元格也会以递归方式自动打开。

当所有不含地雷的单元格都被打开时,游戏就会判定胜利。

例如,网格的初始状态可能如下所示(* 表示地雷,而 c 表示第一个点击的单元格):

*..*...**.
....*.....
..c..*....
........*.
..........

被点击的单元格旁边没有地雷,因此当它被打开时显示数字 00,并且它的 88 个相邻单元也被自动打开,此过程不断继续,最终状态如下:

*..*...**.
1112*.....
00012*....
00001111*.
00000001..

此时,仍有不包含地雷的单元格(用 . 字符表示)未被打开,因此玩家必须继续点击未打开的单元格,使游戏继续进行。

你想尽快赢得游戏胜利并希望找到赢得游戏的最低点击次数。

给定网格的尺寸(N×N),输出能够获胜的最小点击次数。

输入格式

第一行包含整数 T,表示共有 T 组测试数据。

每组数据第一行包含整数 N,表示游戏网格的尺寸大小。

接下来 N 行,每行包含一个长度为 N 的字符串,字符串由 .(无雷)和 *(有雷)构成,表示游戏网格的初始状态。

输出格式

每组数据输出一个结果,每个结果占一行。

结果表示为 Case #x: y,其中 x 是组别编号(从 1 开始),y 是获胜所需的最小点击次数。

数据范围

1≤T≤100
1≤N≤300

输入样例:
2
3
..*
..*
**.
5
..*..
..*..
.*..*
.*...
.*...
输出样例:
Case #1: 2
Case #2: 8
思路:

预处出每个点的数字再对0的位置进行搜索,最后对漏网之鱼进行处理

代码:
#include<bits/stdc++.h>
using namespace std;
const int N =310;
int dx[8]={1,1,1,0,0,-1,-1,-1},dy[8]={1,0,-1,1,-1,1,0,-1};
int num[N][N],st[N][N];
char g[N][N];    //记录扫雷整张地图
void bfs(int a,int b,int n)   //寻找0点周围的所有点,标记为已遍历
{st[a][b]=1;num[a][b]=-1;for(int i=0;i<8;i++){int x=a+dx[i],y=b+dy[i];if(x>=0 && x<n && y>=0 && y<n){if(!st[x][y] && num[x][y]!=-1){if(num[x][y]>0) st[x][y]=1,num[x][y]=-1;if(num[x][y]==0) bfs(x,y,n);}}}
}
int main()
{int T,n;scanf("%d",&T);for(int t=1;t<=T;t++){scanf("%d",&n);for(int i=0;i<n;i++)scanf("%s",g[i]);memset(num,0,sizeof num);for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(g[i][j]!='*')    //不是雷的要统计8个点上雷的总个数{for(int k=0;k<8;k++){int x=i+dx[k],y=j+dy[k];if(x>=0 && x<n && y>=0 && y<n && g[x][y]=='*'){num[i][j]++;}}}else num[i][j]=-1;   //如果是雷则标记为-1}}memset(st,0,sizeof st);int ans=0;for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(num[i][j]==0 && !st[i][j])     //找到一个0点ans++,同时进行bfs{ans++;  bfs(i,j,n);}}}for(int i=0;i<n;i++){for(int j=0;j<n;j++)if(num[i][j]!=-1 && !st[i][j]) ans++;  //找到漏网之鱼,每找到一个就ans++}printf("Case #%d: %d\n",t,ans);}return 0;
}

2、动态网格(Google Kickstart2015 Round D Problem A)

我们有一个 R 行 C 列的矩形网格,其中每个方格内的数字都是 0 或 1。

我们将在网格上执行 N 个操作,每个操作都是以下之一:

  • 操作 M:将网格的一个单元格中的数字更改为 0 或 1。
  • 操作 Q:确定 1 的不同连通区域的数量。 1 的连通区域是指矩阵内全部为 1 的连通的单元格的子集,在子集区域内通过沿着共享边缘在单元格之间行进,可以从该区域中的任何单元格到达该区域中的任何其他单元格。
输入格式

第一行包含整数 T,表示共有 T 组测试数据。

每组数据第一行包含两个整数 R 和 C,表示矩形网格的行数和列数。

接下来 R 行,每行包含一个长度为 C 的由 1 和 0 构成的字符串,表示矩阵网格的初始状态。

接下来一行,包含整数 N,表示操作数量。

接下来 N 行,每行包含一个操作指令,操作指令共两种,如下所示:

  • M x y z,表示 M 指令,具体含义为将第 x 行第 y 列的方格内的值变为 z。
  • Q,表示 Q 指令,表示进行一次询问。
输出格式

对于每组测试数据,第一行输出 Case #x:,其中 x 为组别编号(从 1 开始)。

接下来 Q 行,每行输出一个询问的结果。

数据范围

1≤T≤10
1≤R,C≤100
0≤x<R
0≤y<C
0≤z≤1
1≤N≤1000

输入样例:
1
4 4
0101
0010
0100
1111
7
Q
M 0 2 1
Q
M 2 2 0
Q
M 2 1 0
Q
输出样例:
Case #1:
4
2
2
2
思路:

比较简单的连通块的统计,只是加上了些许操作而已

代码:
#include<bits/stdc++.h>using namespace std;const int N=1001;int g[N][N];
int st[N][N];
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};int t;
int n,m;
int q;void bfs(int x,int y)
{st[x][y]=1;for(int i=0;i<4;i++){int nx=x+dx[i];int ny=y+dy[i];if(nx>=0 && ny>=0 && nx<n && ny<m && !st[nx][ny] && g[nx][ny]==1){bfs(nx,ny);}}}int main()
{cin>>t;int cnt=1;while(t--){cin>>n>>m;for(int i=0;i<n;i++){string s;cin>>s;//cout<<s<<endl;for(int j=0;j<m;j++){			g[i][j]=s[j]-'0';//cout<<s;}}/*for(int i=0;i<n;i++){for(int j=0;j<m;j++){			cout<<g[i][j];}cout<<endl;}*///cout<<"read";cin>>q;cout<<"Case #"<<cnt<<":"<<endl;cnt++;while(q--){char op;cin>>op;if(op=='Q'){//printf("Case #%d:",&cnt);memset(st,0,sizeof st);int res=0;for(int i=0;i<n;i++)for(int j=0;j<m;j++){if(g[i][j]==1 && !st[i][j]){//cout<<"ko"<<endl;bfs(i,j);res++;}}cout<<res<<endl;}else{int x,y,v;cin>>x>>y>>v;g[x][y]=v;}}}return 0;
}

3、走迷宫(模板)

给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。

最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。

请问,该人从左上角移动至右下角 (n,m)处,至少需要移动多少次。

数据保证 (1,1) 处和 (n,m)处的数字为 0,且一定至少存在一条通路。

输入格式

第一行包含两个整数 n 和 m。

接下来 n 行,每行包含 m 个整数(0 或 1),表示完整的二维数组迷宫。

输出格式

输出一个整数,表示从左上角移动至右下角的最少移动次数。

数据范围

1≤n,m≤100

输入样例:
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
输出样例:
8
思路:

深搜加距离记录(距离数组d同时作为st数组用)一遍过

代码:
#include<bits/stdc++.h>using namespace std;const int N=101;typedef pair<int,int> PII;int n,m;
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
int g[N][N];
int d[N][N];
int hh,tt;
PII q[N*N];int bfs()
{q[tt]={0,0};d[0][0]=0;while(hh<=tt){auto t=q[hh++];int x=t.first;int y=t.second;for(int i=0;i<4;i++){int nx=x+dx[i];int ny=y+dy[i];if(nx>=0 && nx<n && ny>=0 && ny<m && d[nx][ny]==-1 &&g[nx][ny]==0){d[nx][ny]=d[x][y]+1;//cout<<d[nx][ny]<<endl;q[++tt]={nx,ny};}}}return d[n-1][m-1];}int main()
{cin>>n>>m;memset(d,-1,sizeof d);for(int i=0;i<n;i++)for(int j=0;j<m;j++){scanf("%d",&g[i][j]);}cout<<bfs();return 0;
}

4、画图(第六次CCF计算机软件能力认证)

用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术。

例如,下图是用 ASCII 字符画出来的 CSPRO 字样。

  ..____.____..____..____...___.../.___/.___||.._.\|.._.\./._.\.|.|...\___.\|.|_).|.|_).|.|.|.||.|___.___).|..__/|.._.<|.|_|.|.\____|____/|_|...|_|.\_\\___/.

本题要求编程实现一个用 ASCII 字符来画图的程序,支持以下两种操作:

  • 画线:给出两个端点的坐标,画一条连接这两个端点的线段。简便起见题目保证要画的每条线段都是水平或者竖直的。水平线段用字符 - 来画,竖直线段用字符 | 来画。如果一条水平线段和一条竖直线段在某个位置相交,则相交位置用字符 + 代替。
  • 填充:给出填充的起始位置坐标和需要填充的字符,从起始位置开始,用该字符填充相邻位置,直到遇到画布边缘或已经画好的线段。注意这里的相邻位置只需要考虑上下左右 4 个方向,如下图所示,字符 @ 只和 4 个字符 * 相邻。
  .*.*@*.*.
输入格式

第 1 行有三个整数 m,n 和 q。m 和 n分别表示画布的宽度和高度,以字符为单位。q 表示画图操作的个数。

第 2 行至第 q+1 行,每行是以下两种形式之一:

  • 0 x1 y1 x2 y2:表示画线段的操作,(x1,y1)和 (x2,y2)分别是线段的两端,满足要么 x1=x2 且 y1≠y2,要么 y1=y2 且 x1≠x2。
  • 1 x y c:表示填充操作,(x,y) 是起始位置,保证不会落在任何已有的线段上;c 为填充字符,是大小写字母。

画布的左下角是坐标为 (0,0) 的位置,向右为 x 坐标增大的方向,向上为 y 坐标增大的方向。

这 q 个操作按照数据给出的顺序依次执行。画布最初时所有位置都是字符 .(小数点)。

输出格式

输出有 n 行,每行 m 个字符,表示依次执行这 q 个操作后得到的画图结果。

数据范围

2≤m,n≤100
0≤q≤100,
0≤x<m(x 表示输入数据中所有位置的 x 坐标),
0≤y<n(y 表示输入数据中所有位置的 y 坐标)。

输入样例1:
4 2 3
1 0 0 B
0 1 0 2 0
1 0 0 A
输出样例1:
AAAA
A--A
输入样例2:
16 13 9
0 3 1 12 1
0 12 1 12 3
0 12 3 6 3
0 6 3 6 9
0 6 9 12 9
0 12 9 12 11
0 12 11 3 11
0 3 11 3 1
1 4 2 C
输出样例2:
................
...+--------+...
...|CCCCCCCC|...
...|CC+-----+...
...|CC|.........
...|CC|.........
...|CC|.........
...|CC|.........
...|CC|.........
...|CC+-----+...
...|CCCCCCCC|...
...+--------+...
................
思路:

我们选择反着读入行列的信息,这样就可以把起点定义为我们熟悉的左上角

洪水覆盖法在这里体现在对封闭图形的填充

代码:
//注意这里的输入是先输入的是列,然后是行
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n, m ,q;char g[N][N];
bool st[N][N];void change(int x1, int y1, int x2, int y2){if(x1 == x2){// 同一行for(int i = y1; i <= y2; i ++){if( g[x1][i] == '|'|| g[x1][i] == '+') g[x1][i]= '+';else g[x1][i] = '-';}}// 同一列else if ( y1 == y2){for(int i = x1; i <= x2; i ++){if( g[i][y1] == '-' || g[i][y1] == '+') g[i][y1] = '+';else g[i][y1] = '|';}}
}void paint(int x, int y, char s){st[x][y] = true;g[x][y] = s;int dx[4] = { -1, 0, 1, 0}, dy[4] = { 0, 1, 0, -1};for(int i = 0; i < 4; i ++){int a = x + dx[i], b = y + dy[i];if(a < 0 || a >= n || b < 0 || b >= m || st[a][b]) continue;if(g[a][b] == '|' || g[a][b] == '-' || g[a][b] == '+') continue;paint(a, b, s);}
}
int main(){cin >> m >> n >> q;for(int i = 0; i < n; i ++)for(int j = 0; j < m; j ++)g[i][j] = '.';while(q --){int op;cin >> op;if(op == 0){// x和y反着读入int x1, y1, x2, y2;cin >> y1 >> x1 >> y2 >> x2;if(x1 > x2) swap(x1, x2);if(y1 > y2) swap(y1, y2);change(x1, y1, x2, y2);}else{int x, y;char s;// x和y反着读入cin >> y >> x >> s;memset(st, 0, sizeof st);paint(x, y, s);}}for(int i = n -1; i >= 0; i--){for(int j = 0; j < m; j++)cout << g[i][j];cout << endl;}
}

5、山峰和山谷(POI2007 & 《信息学奥赛一本通》)

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

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

给定一个地图,为FGD想要旅行的区域,地图被分为 n×n 的网格,每个格子 (i,j) 的高度 w(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)。

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

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

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

输入格式

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

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

输出格式

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

数据范围

1≤n≤1000
0≤w≤109

输入样例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

思路:

加两个参数表示有无山峰或者山谷即可,遇到相同的数字就继续bfs,记得bool参数加引用,不然不会改变原来的变量

dfs代码 (超出内存版):

bfs(爆栈)

//dfs超出内存了 
#include<bits/stdc++.h>using namespace std; const int N=1000;int g[N][N];int st[N][N];int dx[]={-1,1,0,0,1,1,-1,-1};
int dy[]={0,0,-1,1,1,-1,-1,1};//八个方向(新增左上左下右上右下)
int n;void dfs(int x,int y,bool &h,bool &l)//这里必须引用!
{st[x][y]=1;for(int i=0;i<8;i++){int nx=x+dx[i];int ny=y+dy[i];if(nx>=0 && ny>=0 && nx<n && ny<n){if(g[nx][ny]<g[x][y])l=true;//有比他更低的else if(g[nx][ny]>g[x][y])h=true;//有比他更高的else if(g[nx][ny]==g[x][y]  && !st[nx][ny]){dfs(nx,ny,h,l);}}}}int main()
{cin>>n;int peak=0,valley=0;for(int i=0;i<n;i++)for(int j=0;j<n;j++){scanf("%d",&g[i][j]);	}	for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(!st[i][j]){bool h=false;bool l=false;dfs(i,j,h,l);if(!h)peak++;//cout<<i<<""<<j<<endl;if(!l)valley++;//cout<<i<<""<<j<<endl;}}cout<<peak<<" "<<valley;return 0;
}
bfs代码 (AC成功): 
#include <iostream>
#include <queue>
#define x first
#define y second
using namespace std;
typedef pair <int,int> PII;
const int N = 1010;
int n;
int h[N][N];
bool st[N][N];
void bfs (int sx,int sy,bool &has_higher,bool &has_lower) {queue <PII> q;q.push ({sx,sy});while (!q.empty ()) {PII t = q.front ();q.pop ();for (int i = t.x - 1;i <= t.x + 1;i++) {for (int j = t.y - 1;j <= t.y + 1;j++) {if (i < 1 || i > n || j < 1 || 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.push ({i,j});st[i][j] = true;}}}}
}
int main () {cin >> n;for (int i = 1;i <= n;i++) {for (int j = 1;j <= n;j++) cin >> h[i][j];}int peak = 0,valley = 0;for (int i = 1;i <= n;i++) {for (int j = 1;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++;if (!has_lower) valley++;}}}cout << peak << ' ' << valley << endl;return 0;
}
dfs代码 (AC成功版):
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int N = 1010;int n;
bool f[N][N];
int h[N][N];
// 将两个需要返回的参数,设置为全局变量,则可以正常通过此题。
//  将两个需要返回的参数,设置为带地址符的变量,则MLE
bool has_higher, has_lower;
//  657 ms
void dfs(int sx, int sy) {f[sx][sy] = true;for (int x = sx - 1; x <= sx + 1; x++) {for (int y = sy - 1; y <= sy + 1; y++) {if (x < 0 || x >= n || y < 0 || y >= n) continue;if (h[sx][sy] != h[x][y]) { //高度不相等if (h[sx][sy] < h[x][y]) has_higher = true;if (h[sx][sy] > h[x][y]) has_lower = true;} else { //高度相等if (f[x][y]) continue;dfs(x, y);}}}
}
int vally, peak;
int main() {//加快读入cin.tie(0), ios::sync_with_stdio(false);cin >> n;for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)cin >> h[i][j];for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (!f[i][j]) {has_higher = has_lower = false;dfs(i, j);if (has_higher && has_lower) continue;if (has_higher) vally++;if (has_lower) peak++;}}}//对于不存在山峰+山谷的一马平地,山峰山谷都输出1if (peak == 0 && vally == 0) peak = 1, vally = 1;printf("%d %d\n", peak, vally);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/281728.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【蓝桥杯】RMQ(Range Minimum/Maximum Query)

一.概述 RMQ问题&#xff0c;是求区间最大值或最小值&#xff0c;即范围最值问题。 暴力解法是对每个询问区间循环求解&#xff0c;设区间长度n&#xff0c;询问次数m&#xff0c;则复杂度是O ( nm )。 一般还可以使用线段树求解&#xff0c;复杂度是O(mlogn)。 但还有一种…

Postgresql数据库入门简介

Postgresql入门 1.Postgresql数据库简介 PostgresQL是一个功能强大的开源数据库系统。经过长达15年以上的积极开发和不断改进&#xff0c;PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSql可以运行在所有主流操作系统上&#xff0c;包括Linux…

会员项目定价卡css3特效

会员项目定价卡css3特效&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 下载地址 会员项目定价卡css3特效代码

【爬虫】web自动化和接口自动化

专栏文章索引&#xff1a;爬虫 目录 一、介绍 二、推荐 1.接口自动化 2.Web自动化 一、介绍 爬虫技术一般可以分为两种类型&#xff1a;接口自动化和web自动化。下面是它们的简要介绍&#xff1a; 1.接口自动化 接口自动化技术的主要目的是通过模拟HTTP请求来实现自动化…

Zama:链上隐私新标准

1. 引言 揭示 Web3 中全同态加密的潜在用例&#xff0c;并深入研究 Zama 的四种主要开源产品&#xff1a; TFHE-rsConcreteConcrete MLfhEVM 众所周知&#xff0c;在当今时代&#xff0c;数据隐私问题与互联网诞生以来一样普遍。仅 Yahoo!、Equifax 和 Marriott 的数据泄露就…

java动态规划学习笔记

学习笔记目录&#xff0c;这里记录个大纲&#xff0c;详情点链接 背包问题 01背包问题综述 01背包问题&#xff08;二维数组&#xff09;https://blog.csdn.net/m0_73065928/article/details/136794406?spm1001.2014.3001.5501 01背包问题&#xff08;滚动数组&#xff09…

LeetCode 热题 100 | 堆(一)

目录 1 什么是堆排序 1.1 什么是堆 1.2 如何构建堆 1.3 举例说明 2 215. 数组中的第 K 个最大元素 2.1 子树大根化 2.2 遍历所有子树 2.3 弹出栈顶元素 2.4 完整代码 菜鸟做题&#xff0c;语言是 C 1 什么是堆排序 1.1 什么是堆 堆的定义和分类&#xff…

ECharts5 概念篇1

图表容器及大小 初始化 在 HTML 中定义有宽度和高度的父容器&#xff08;推荐&#xff09; 通常来说&#xff0c;需要在 HTML 中先定义一个 <div> 节点&#xff0c;并且通过 CSS 使得该节点具有宽度和高度。初始化的时候&#xff0c;传入该节点&#xff0c;图表的大小默认…

海外客户获取难?海外云手机助力电商引流!

海外电商面临的市场竞争激烈&#xff0c;如何在海外市场获客成为了摆在许多卖家面前的难题。而在这个问题的解决方案中&#xff0c;海外云手机崭露头角&#xff0c;成为助力电商引流的新利器。 在当前市场中&#xff0c;云手机主要用于游戏挂机&#xff0c;但其潜力在海外电商领…

四、C语言中的数组:如何输入与输出二维数组(数组,完)

本章的学习内容如下 四、C语言中的数组&#xff1a;数组的创建与初始化四、C语言中的数组&#xff1a;数组的输入与元素个数C语言—第6次作业—十道代码题掌握一维数组四、C语言中的数组&#xff1a;二维数组 1.二维数组的输入与输出 当我们输入一维数组时需要一个循环来遍历…

AWS监控,AWS 性能监控工具

监控云部署的性能是 IT 环境正常运行的内在条件。AWS 云是一个架构良好的框架&#xff0c;管理员可以使用专用的AWS 性能监控工具增强服务的功能。执行AWS监视是为了跟踪在AWS环境中积极运行的应用程序工作负载和资源。AWS监视器跟踪各种AWS云指标&#xff0c;以帮助提高在其上…

刷题DAY30 | LeetCode 332-重新安排行程 51-N皇后 37-解数独

332 重新安排行程&#xff08;hard&#xff09; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&…

机器学习知识点复习 下(保研、复试、面试)百面机器学习笔记

机器学习知识点复习下 第八章、采样1.采样的作用 第九章、前向神经网络1.多层感知机与布尔函数2.神经网络中的激活函数3.多层感知机的反向传播算法4.神经网络训练技巧5.深度卷积神经网络6.深度残差网络 第十章、循环神经网络1.循环神经网络和卷积神经网络2.循环神经网络的梯度消…

【前端Vue】Vue3+Pinia小兔鲜电商项目第2篇:什么是pinia,1. 创建空Vue项目【附代码文档】

全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 全套教程部分目录&#xff1a; 部分文件图片&#xff1a; 什么是pinia Pinia 是 Vue 的专属状态管理库&#xff0c;可以实现跨组件或页面共享状态&#xff0c;是…

数字电源浅析

电力电子技术是关于能量转换、调节、控制和管理等方面的学科,而数字电源则是电力电子技术的一种应用,是利用数字电路技术实现电源控制和管理的新型电源。 一、什么是数字电源 数字电源是一种数字控制的电源设备,可以通过数字控制芯片(DSP、MCU等)实现输出电压、电流、功…

TypeScript在学习(0)

1.什么是TypeScript? 答:TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集&#xff0c;而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 个人浅见&#xff0c;我一直把ts简单理解成&#xff0c;其实就是javascript上多了…

插入排序+希尔排序

目录 插入排序&#xff1a; 希尔排序&#xff1a; 插入排序&#xff1a; 注意这里不要将插入排序和冒泡排序弄混&#xff1a; 插入排序是将数据不断放入前一个有序数列&#xff1a; // 插入排序 void InsertSort(int* a, int n) {for (int j 1; j < n; j){for (int i j;…

【嵌入式硬件】步进电机

1.步进电机简介 1.1步进电机基本原理 步进电机的英文是stepping motor。step的中文意思是行走、迈步。所以仅从字面上我们就可以得知,步进电机就是一步一步移动的电动机。说的官方一点儿,步进电机是一种将电脉冲信号转换成相应角位移或者线位移的电动机(直线电机)。下图为…

什么是物联网远程模块

在数字化和信息化的浪潮下&#xff0c;物联网技术正在以惊人的速度改变着我们的生活和生产方式。物联网远程模块&#xff0c;作为物联网技术的核心组件之一&#xff0c;正引领着这场变革。HiWoo Box就是这样一款出色的物联网远程模块&#xff0c;它通过支持远程透传、远程锁机、…

Flink GateWay、HiveServer2 和 hive on spark

Flink SQL Gateway简介 从官网的资料可以知道Flink SQL Gateway是一个服务&#xff0c;这个服务支持多个客户端并发的从远程提交任务。Flink SQL Gateway使任务的提交、元数据的查询、在线数据分析变得更简单。 Flink SQL Gateway的架构如下图&#xff0c;它由插件化的Endpoi…