7-1 最大子列和问题 (20分)(dp或贪心)

给定K个整数组成的序列{ N1, N2, …, N**K },“连续子列”被定义为{ N**i, N**i+1, …, N**j },其中 1≤ijK。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。

本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特点如下:

  • 数据1:与样例等价,测试基本正确性;
  • 数据2:102个随机整数;
  • 数据3:103个随机整数;
  • 数据4:104个随机整数;
  • 数据5:105个随机整数;

输入格式:

输入第1行给出正整数K (≤100000);第2行给出K个整数,其间以空格分隔。

输出格式:

在一行中输出最大子列和。如果序列中所有整数皆为负数,则输出0。

输入样例:

6
-2 11 -4 13 -5 -2

输出样例:

20
#include <iostream>
#include <stdio.h>
using namespace std;
int main(){//dp[i]表示到i为止最大的子数组和//dp[i+1] = max(dp[i] + a[i], a[i])int dp[100005]={0};int a[100005];int k;cin>>k;for(int i = 0; i < k; i++){cin>>a[i];}int sum = -1;dp[0] = a[0];for(int i = 1; i < k; i++){dp[i] = max(dp[i-1] + a[i], a[i]);}for(int i = 0; i < k; i++){sum = max(sum, dp[i]);}if (sum < 0) sum = 0;printf("%d", sum);return 0;
}

7-2 一元多项式的乘法与加法运算 (20分)

设计函数分别求两个一元多项式的乘积与和。

输入格式:

输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式:

输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0

输入样例:

4 3 4 -5 2  6 1  -2 0
3 5 20  -7 4  3 1

输出样例:

15 24 -25 22 30 21 -10 20 -21 8 35 6 -33 5 14 4 -15 3 18 2 -6 1
5 20 -4 4 -5 2 9 1 -2 0
#include <iostream>
using namespace std;
int main(){int n, a[1005] ={0}, coff, exp, muti[2001] = {0}, add[1005]={0};cin >> n;for(int i = 0; i < n; i++){cin >> coff >> exp;a[exp] = coff;add[exp] = coff;}cin >> n;for(int i = 0; i < n; i++){cin >> coff >> exp;for(int j = 0; j < 1005; j++){muti[exp + j] += a[j] * coff;}add[exp] += coff;}int cnt = 0;for(int j = 2000; j >= 0; j--){if(muti[j]!=0){if(cnt){cout<<" ";}cout << muti[j] <<" " <<j;cnt++;}}if(!cnt){cout <<"0 0";}cnt = 0;cout <<endl;for(int j = 1005; j >= 0; j--){if(add[j]!=0){if(cnt){cout<<" ";}cout << add[j] <<" " <<j;cnt++;}}if(!cnt){cout <<"0 0";}return 0;
}

7-3 树的同构 (25分)

给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。

img

图1

img

图2

现给定两棵树,请你判断它们是否是同构的。

输入格式:

输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点的编号。如果孩子结点为空,则在相应位置上给出“-”。给出的数据间用一个空格分隔。注意:题目保证每个结点中存储的字母是不同的。

输出格式:

如果两棵树是同构的,输出“Yes”,否则输出“No”。

输入样例1(对应图1):

8
A 1 2
B 3 4
C 5 -
D - -
E 6 -
G 7 -
F - -
H - -
8
G - 4
B 7 6
F - -
A 5 1
H - -
C 0 -
D - -
E 2 -

输出样例1:

Yes

输入样例2(对应图2):

8
B 5 7
F - -
A 0 3
C 6 -
H - -
D - -
G 4 -
E 1 -
8
D 6 -
B 5 -
E - -
H - -
C 0 2
G - 3
F - -
A 1 4

输出样例2:

No

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wOS2oZLV-1598406109492)(C:\Users\hp\AppData\Roaming\Typora\typora-user-images\image-20200820142141845.png)]

#include <stdio.h>#define MaxTree 10
#define ElementType char
#define Tree int
#define NULL -1struct TreeNode
{ElementType e;Tree left;Tree right;
} T1[MaxTree],T2[MaxTree];Tree BuildTree ( struct TreeNode T[]);
int Isomorphic(Tree R1,Tree R2);int main()
{Tree R1,R2;R1 = BuildTree(T1);R2 = BuildTree(T2);if( Isomorphic(R1,R2)){printf("Yes\n");}else{printf("No\n");}return 0;}Tree BuildTree ( struct TreeNode T[])
{int i;int n;int check[MaxTree];char cl,cr;Tree root = NULL;   //若n为0,返回NULLscanf("%d",&n);if( n ){for( i=0; i<n; i++) check[i] = 0;for( i=0; i<n; i++){scanf("\n%c %c %c",&T[i].e,&cl,&cr);if( cl!='-' ){T[i].left = cl-'0';   //若输入不为'-',那字符减去字符0转换为整型数值check[T[i].left] = 1; //把在静态链表中出现过的数值标记为1}else if( cl=='-' ){T[i].left = NULL;}if( cr!='-' ){T[i].right = cr-'0';check[T[i].right] = 1;}else if( cr=='-' ){T[i].right = NULL;}}for( i=0; i<n; i++){if( !check[i])break;}root = i;}return root;
}int Isomorphic(Tree R1,Tree R2)
{if((R1==NULL)&&(R2==NULL))      //如果为空树则是同构的return 1;if(((R1==NULL)&&(R2!=NULL))||((R1!=NULL)&&(R2==NULL)))//如果一个为空一个不为空则不是同构的return 0;if((T1[R1].e)!=(T2[R2].e))//如果数据不同则不是同构的return 0;//如果左儿子都为空判断右儿子是否同构if((T1[R1].left==NULL)&&(T2[R2].left==NULL))return Isomorphic(T1[R1].right,T2[R2].right);/* 如果两棵树左儿子都不为空并且数据还是一样的,对左儿子进行递归*/if ( ((T1[R1].left!=NULL)&&(T2[R2].left!=NULL))&&((T1[T1[R1].left].e)==(T2[T2[R2].left].e)) )return ( Isomorphic( T1[R1].left, T2[R2].left )&&Isomorphic( T1[R1].right, T2[R2].right ) );/* 如果两棵树左儿子(一个空一个不空或者都不空)并且数据不一样,那么判断第一棵树的左(右)儿子是否跟第二棵树的右(左)儿子同构 */elsereturn ( Isomorphic( T1[R1].left, T2[R2].right)&&Isomorphic( T1[R1].right, T2[R2].left ) );}

7-4 是否同一棵二叉搜索树 (25分)

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。

输入格式:

输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需要检查的序列。

简单起见,我们保证每个插入序列都是1到N的一个排列。当读到N为0时,标志输入结束,这组数据不要处理。

输出格式:

对每一组需要检查的序列,如果其生成的二叉搜索树跟对应的初始序列生成的一样,输出“Yes”,否则输出“No”。

输入样例:

4 2
3 1 4 2
3 4 1 2
3 2 4 1
2 1
2 1
1 2
0

输出样例:

Yes
No
No
#include<bits/stdc++.h>using namespace std;
const int maxn = 1024 + 7;int n, m;
int a[maxn], b[maxn];void build1(){memset(a, -1, sizeof a);for(int i = 0; i < n; ++i){int id = 1, x;scanf("%d", &x);while(1){if(a[id] == -1){a[id] = x;break;}else if(x < a[id]){id *= 2;}else id = 2*id+1;}}
}void build2()
{memset(b, -1, sizeof b);for(int i = 0; i < n; ++i){int id = 1, x;scanf("%d", &x);while(1){if(b[id] == -1){b[id] = x;break;}else if(x < b[id]){id *= 2;}else id = 2*id+1;}}
}int check()
{for(int i = 1; i < maxn; ++i){if(a[i] != b[i]) return 0;}return 1;
}int main(){while(cin>>n>>m){if(n==0)break;build1();for(int i = 0; i < m; ++i){build2();if(check()) cout<<"Yes"<<endl;else cout<<"No"<<endl;}}return 0;
}

//慕课上浙大老师的做法:7-4 是否同一棵二叉搜索树 (25分)

7-5 堆中的路径 (25分)(数据结构–堆)

将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。

输入格式:

每组测试第1行包含2个正整数NM(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。

输出格式:

对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。

输入样例:

5 3
46 23 26 24 10
5 4 3

输出样例:

24 23 10
46 23 10

以前建堆都是处理完后离线操作,一系列sift,但是这样做与题目中建好的堆对应不了,只能边插入边调整,参考

7-5 堆中的路径 (25分)

#include <iostream>
using namespace std;
#define maxn 1005
#define minn -10001
int heap[maxn], size;
void BuildHeap();
void insert(int);
int main(){int n, m, t;cin >> n >> m;BuildHeap();for(int i = 0; i < n; i++){cin >> t;insert(t);}for(int i = 0; i < m; i++){cin >> t;cout << heap[t];while(t > 1){cout << " " << heap[t/2];t/=2;}cout <<endl;}return 0;
}
void BuildHeap(){size = 0;heap[0] = minn;//0位置不存数据,设置岗哨
}
void insert(int x){//插入结点形成小顶堆int i;for(i = ++size; heap[i/2] > x; i/=2){//小顶堆,如果父节点大于插入结点则二者交换heap[i] = heap[i/2];}heap[i] = x;
}

7-6 列出连通集 (25分)(BFS、DFS遍历图)

给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。

输入格式:

输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。

输出格式:

按照"{ v1 v2 … v**k }"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。

输入样例:

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

输出样例:

{ 0 1 4 2 7 }
{ 3 5 }
{ 6 }
{ 0 1 2 7 4 }
{ 3 5 }
{ 6 }
#include <iostream>
#include <queue>
#include <string.h>
using namespace std;//输出有顺序,使用邻接矩阵存储方便遍历
int edge[15][15]={0};
bool vis[15];
int n, e;
void dfs(int index){cout << index <<" ";vis[index] = true;for(int i = 0; i < n; i++){if(!vis[i] && edge[index][i] == 1){dfs(i);}}return;
}
void bfs(int index){queue<int> q;while(!q.empty()){q.pop();}q.push(index);vis[index] = true;while(!q.empty()){int top = q.front();cout << top <<" ";q.pop();for(int i = 0; i < n; i++){if(!vis[i] && edge[top][i] == 1){q.push(i);vis[i] = true;}}}return;
}
int main(){cin >> n >> e;//memeset在这里面<string.h>memset(vis, false, sizeof(vis));for(int i = 0; i < e; i++){int from, to;cin >> from >> to;edge[from][to] = edge[to][from] = 1;}for(int i = 0; i < n; i++){if(!vis[i]){cout <<"{ ";dfs(i);cout << "}" << endl;}}for(int i = 0; i < n; i++){vis[i] = false;}for(int i = 0; i < n; i++){if(!vis[i]){cout <<"{ ";bfs(i);cout << "}" << endl;}}return 0;
}

7-7 六度空间 (30分)(遍历节点进行BFS)

“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。

img
图1 六度空间示意图

“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社交网络关系的一手数据已经逐渐使得“六度空间”理论的验证成为可能。

假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。

输入格式:

输入第1行给出两个正整数,分别表示社交网络图的结点数N(1<N≤103,表示人数)、边数M(≤33×N,表示社交关系数)。随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个结点的编号(节点从1到N编号)。

输出格式:

对每个结点输出与该结点距离不超过6的结点数占结点总数的百分比,精确到小数点后2位。每个结节点输出一行,格式为“结点编号:(空格)百分比%”。

输入样例:

10 9
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10

输出样例:

1: 70.00%
2: 80.00%
3: 90.00%
4: 100.00%
5: 100.00%
6: 100.00%
7: 100.00%
8: 90.00%
9: 80.00%
10: 70.00%
#include <iostream>
#include <stdio.h>
#include <queue>
#include <string.h>
using namespace std;
int n, m;   //社交网络图的结点数N(1<N≤1000 表示人数)、边数M(≤33×N,表示社交关系数)
int a[1005][1005]={0};  //全局变量声明时值为0,这里初始化以防万一
int vis[1005]={0};
int bfs(int index){int cnt = 0;memset(vis, 0, sizeof(vis));queue<int> q;q.push(index);cnt++;vis[index] = 1;while (q.size()) {index = q.front();for (int i = 1; i <= n; i++) {if (a[index][i]&&!vis[i]) {vis[i] = vis[index] + 1;if (vis[i] < 8) {q.push(i);cnt++;}}}q.pop();}return cnt;
}
int main(){cin >> n >> m;for(int i = 0; i < m; i++){int from, to;cin >> from >> to;a[from][to] = a[to][from] = 1;}for(int i = 1; i <= n; i++){printf("%d: %.2f%%\n", i, 100.0*bfs(i)/n);}return 0;
}

几个求最短路算法的比较与分析(面试前再看看)

有权图的单源最短路算法:

方法1:直接扫描所有未收录顶点-O(|V|),时间复杂度T=O(|V2|+|E|),适合稠密图

方法2:将dist存在最小堆中-O(log|V|),更新dist[w]的值-O(log|V|),T=O(|V|log|V|+|E|log|V|) =O(|E|log|V|),对于稀疏图效果好

多源最短路算法:

方法1:直接将单源最短路算法调用|V|遍,T=O(|V|3+|E|×|V|),对于稀疏图效果好

方法2:Floyd算法,T=O(|V|3),适合稠密图

7-8 哈利·波特的考试 (25分)(多源最短路floyd)

哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。

现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这只动物变成任意一只指定动物的本事。于是他来问你:带什么动物去可以让最难变的那种动物(即该动物变为哈利·波特自己带去的动物所需要的魔咒最长)需要的魔咒最短?例如:如果只有猫、鼠、鱼,则显然哈利·波特应该带鼠去,因为鼠变成另外两种动物都只需要念4个字符;而如果带猫去,则至少需要念6个字符才能把猫变成鱼;同理,带鱼去也不是最好的选择。

输入格式:

输入说明:输入第1行给出两个正整数N (≤100)和M,其中N是考试涉及的动物总数,M是用于直接变形的魔咒条数。为简单起见,我们将动物按1~N编号。随后M行,每行给出了3个正整数,分别是两种动物的编号、以及它们之间变形需要的魔咒的长度(≤100),数字之间用空格分隔。

输出格式:

输出哈利·波特应该带去考场的动物的编号、以及最长的变形魔咒的长度,中间以空格分隔。如果只带1只动物是不可能完成所有变形要求的,则输出0。如果有若干只动物都可以备选,则输出编号最小的那只。

输入样例:

6 11
3 4 70
1 2 1
5 4 50
2 6 50
5 6 60
1 3 70
4 6 60
3 6 80
5 1 100
2 4 60
5 2 80

输出样例:

4 70

7-8 哈利·波特的考试 (25分)

自己的代码没有人家写的清晰,贴一下这位大哥的代码,侵权立即删除。

#include<stdio.h>
#include<stdlib.h>#define MAXVEX 105
#define INFINITY  65535void CreateGraph( );
void Floyd();
void FindAnimal();
int FindMax( int i);int G[MAXVEX][MAXVEX],Nv,Ne;
int D[MAXVEX][MAXVEX];   //存储最短路径矩阵int main()
{CreateGraph();FindAnimal();return 0;
}void CreateGraph()
{//用邻接矩阵表示图int i,j;int v1,v2,w;scanf("%d %d",&Nv,&Ne);for( i=1; i<=Nv; i++){for( j=1; j<=Nv; j++){if( i==j){G[i][j] = 0;}else G[i][j] = INFINITY;  //初始化}}for( i=0; i<Ne; i++)  //注意这里是读入边{scanf("%d %d %d",&v1,&v2,&w);G[v1][v2] = w;         //读入权值G[v2][v1]= G[v1][v2];  //无向图对称}
}void FindAnimal()
{int max,min;int animal;int i;Floyd();min = INFINITY;for( i=1; i<=Nv; i++){//比较每行最大距离,寻找其中最小值max = FindMax( i );if( max == INFINITY){//判断图是否连同通printf("0\n");return;}if( min>max ){min = max;animal = i;}}printf("%d %d\n",animal,min);}
int FindMax( int i)
{int max;int j;max = 0;for( j=1; j<=Nv; j++){if( i!=j && D[i][j]>max){max = D[i][j];}}return max;
}void Floyd()
{int i,j,k;for( i=1; i<=Nv; i++){for( j=1; j<=Nv; j++){D[i][j] = G[i][j];}}//注意动物是从下标1开始编号for ( k=1; k<=Nv; k++){for( i=1; i<=Nv; i++){for( j=1; j<=Nv; j++){if( D[i][k]+D[k][j] < D[i][j]){D[i][j] = D[i][k]+D[k][j];}}}}
}

7-9 旅游规划 (25分)(单源最短路dijkstra)

有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。

输入格式:

输入说明:输入数据的第1行给出4个正整数NMSD,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中间用空格分开,数字均为整数且不超过500。输入保证解的存在。

输出格式:

在一行里输出路径的长度和收费总额,数字间以空格分隔,输出结尾不能有多余空格。

输入样例:

4 5 0 3
0 1 1 20
1 3 2 30
0 3 4 10
0 2 2 20
2 3 1 20

输出样例:

3 40

以后变量起名一定短点,见名知义对于算法题不适用…

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <climits>
using namespace std;
#define N 505
int MAX = INT_MAX;
int graph[N][N], cost[N][N];	
int dist[N], vis[N], mincost[N];
void dijkstra(int , int , int);
int main(){int n, m, s, d;cin >> n >> m >> s >> d;//初始化for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){graph[i][j] = graph[j][i] = MAX;cost[i][j] = cost[j][i] = MAX;}}memset(vis, 0, sizeof(vis));for(int i = 0; i < m; i++){int from, to, len, c;cin >> from >> to >> len >> c;graph[from][to] = graph[to][from] = len;cost[from][to] = cost[to][from] = c;}//以s作为起点,初始化dist数组for(int i = 0; i < n; i++){dist[i] = graph[s][i];mincost[i] = cost[s][i];}dijkstra(s, n, d);cout << dist[d] <<" " << mincost[d];return 0;
}
void dijkstra(int s, int n, int d){vis[s] = 1;dist[s] = 0;for(int i = 0; i < n -1; i++){int minn = MAX, minindex = -1;for(int j = 0; j < n; j++){if(vis[j] == 0 && dist[j] < minn){minn = dist[j];minindex = j;}}vis[minindex] = 1;//选出最小的点要更新dist数组时,顺便把cost数组也更新了//以刚选出的点minindex作为中转,遍历所有节点,查看能否做松弛操作//即 看是否能有dist[j] > dist[minindex] + graph[minindex][j]for(int j = 0; j < n; j++){if(vis[j] == 0 && graph[minindex][j] < MAX && dist[minindex] + graph[minindex][j] < dist[j]){dist[j] = dist[minindex] + graph[minindex][j];mincost[j] = mincost[minindex] + cost[minindex][j];}else if(vis[j]==0 && graph[minindex][j] < MAX && dist[minindex] + graph[minindex][j] == dist[j] && mincost[j]>mincost[minindex]+cost[minindex][j])mincost[j] = mincost[minindex] + cost[minindex][j];}/*for(int i = 0; i < n; i++){cout << "dist[i]:" << dist[i] <<" ";}cout <<endl;*/}
}

求最小生成树算法的比较与分析

Prim算法:小树变大树,O(|V|2),适合稠密图

Kruskal算法:将森林合并成树,不用堆:O(|E|2);用堆优化以后:O(|E|log|E|),适合稀疏图

7-10 公路村村通 (30分)(最小生成树prim)

现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。

输入格式:

输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。

输出格式:

输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。

输入样例:

6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3

输出样例:

12
#include <iostream>
#include <string.h>
#include <climits>
using namespace std;
#define N 1005
const int INF = INT_MAX;
int g[N][N];     //邻接矩阵
bool visited[N];	//顶点是否已经进入S集合
int lowcost[N]; 	//从集合S到未被选中集合的最小权值
int n, m;
int Prim();
int main(){cin >> n >> m;//初始化for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++){g[i][j] = g[j][i] = INF;}}for(int i = 0; i < m; i++){int from, to, cost;cin >> from >> to >> cost;g[from][to] = g[to][from] = cost;}cout << Prim() << endl;return 0;
}
int Prim(){for(int i = 1; i <= n; i++){lowcost[i] = INF;visited[i] = false;}//不要忘记初始化for(int i = 2; i <= n; i++){if(g[1][i]!=INF) lowcost[i] = g[1][i];}visited[1] = true;lowcost[1] = 0;/* for(int i = 1; i <= n; i++){cout << lowcost[i] <<" ";}*/int res = 0;for(int k = 1; k <= n-1; k++){//循环n-1次int v = -1, minn = INF;for(int i = 1; i <= n; i++){if(!visited[i] && lowcost[i] < minn){v = i;minn = lowcost[i];}}if(v == -1) return -1;visited[v] = true;res += lowcost[v];// cout << "v:" << v <<" " << lowcost[v] << endl;for(int i = 2; i <= n; i++){lowcost[i] = min(lowcost[i], g[v][i]);}}return res;
}

7-11 关键活动 (30分)

假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。

比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。

但是需要注意的是,对一组子任务,并不是任意的任务调度都是一个可行的方案。比如方案中存在“子任务A依赖于子任务B,子任务B依赖于子任务C,子任务C又依赖于子任务A”,那么这三个任务哪个都不能先执行,这就是一个不可行的方案。

任务调度问题中,如果还给出了完成每个子任务需要的时间,则我们可以算出完成整个工程需要的最短时间。在这些子任务中,有些任务即使推迟几天完成,也不会影响全局的工期;但是有些任务必须准时完成,否则整个项目的工期就要因此延误,这种任务就叫“关键活动”。

请编写程序判定一个给定的工程项目的任务调度是否可行;如果该调度方案可行,则计算完成整个工程项目需要的最短时间,并输出所有的关键活动。

输入格式:

输入第1行给出两个正整数N(≤100)和M,其中N是任务交接点(即衔接相互依赖的两个子任务的节点,例如:若任务2要在任务1完成后才开始,则两任务之间必有一个交接点)的数量。交接点按1*N*编号,*M*是子任务的数量,依次编号为1M。随后M行,每行给出了3个正整数,分别是该任务开始和完成涉及的交接点编号以及该任务所需的时间,整数间用空格分隔。

输出格式:

如果任务调度不可行,则输出0;否则第1行输出完成整个工程项目需要的时间,第2行开始输出所有关键活动,每个关键活动占一行,按格式“V->W”输出,其中V和W为该任务开始和完成涉及的交接点编号。关键活动输出的顺序规则是:任务开始的交接点编号小者优先,起点编号相同时,与输入时任务的顺序相反。

输入样例:

7 8
1 2 4
1 3 3
2 4 5
3 4 3
4 5 1
4 6 6
5 7 5
6 7 2

输出样例:

17
1->2
2->4
4->6
6->7

时间宝贵,AOE写起来得有200行,贴上大哥的代码,跳过~

7-11 关键活动 (30分)

#include<stdio.h>
#include<stdlib.h>#define MAXVER 105
#define INFINITY 65535int G[MAXVER][MAXVER];  //图
int early[MAXVER];      //最早发生时间
int late[MAXVER];      //最迟发生时间
int in[MAXVER];        //入度
int out[MAXVER];       //出度
int nv,ne;            //顶点数目 ,边数目void CreatGraph();
int EarlyTime();
void LateTime(int Scost);
int FindMax( int a,int b);
int FindMin( int a,int b);int main()
{int flag;int i,j;scanf("%d %d",&nv,&ne);CreatGraph();flag = EarlyTime();if( flag==-1){printf("0\n");}else{printf("%d\n",flag);LateTime( flag );for( i=1; i<=nv; i++){if(early[i] != late[i])continue;for( j=nv; j>=1 ; j--){if( G[i][j]>=0 && early[j]==late[j] &&late[j]-G[i][j]==early[i]){//i,j均在关键路径上且相邻printf("%d->%d\n",i,j);}}}}return 0;
}void CreatGraph()
{int i,j;int s,d,cost;for( i=1; i<=nv; i++){for( j=1; j<=nv; j++){G[i][j] = -1;}early[i] = 0;late[i] = INFINITY;in[i] = 0;out[i] = 0;}for( i=0; i<ne; i++){scanf("%d %d %d",&s,&d,&cost);G[s][d] = cost;   //有向边in[d] ++;out[s]++;}}int EarlyTime()
{int queue[nv];int first =-1,rear = -1;int count=0;int i;int temp,ret=0;for( i=1; i<=nv; i++){if( in[i]==0){//如果入度为0则入队queue[++rear] = i;}}while( first<rear)    //判断队是否为空{temp = queue[++first];   //出队count++;for( i=1; i<=nv; i++){if( G[temp][i]>=0 ){in[i]--;early[i] = FindMax( early[i],early[temp]+G[temp][i]);if( in[i]==0){queue[++rear] = i;}}}}if( count!=nv){ret = -1;}else{ret = early[1];for( i=2; i<=nv; i++){if(early[i] > ret){//找出最大的early[i]ret = early[i];}}}return ret;
}void LateTime(int Scost)
{int i;int queue[MAXVER];int first=-1,rear=-1;int temp;for( i=1; i<=nv; i++){if( out[i]==0){queue[++rear] = i;late[i] = Scost;}}while( first<rear ){temp = queue[++first];for( i=nv; i>=1; i--){if( G[i][temp]>=0){late[i] = FindMin( late[i],late[temp]-G[i][temp]);out[i]--;if(out[i]==0){queue[++rear] = i;}}}}}
int FindMax( int a,int b)
{if( a>b ){return a;}else{return b;}
}
int FindMin( int a,int b)
{if( a>b ){return b;}else{return a;}
}

7-12 排序 (25分)

给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。

本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:

  • 数据1:只有1个元素;
  • 数据2:11个不相同的整数,测试基本正确性;
  • 数据3:103个随机整数;
  • 数据4:104个随机整数;
  • 数据5:105个随机整数;
  • 数据6:105个顺序整数;
  • 数据7:105个逆序整数;
  • 数据8:105个基本有序的整数;
  • 数据9:105个随机正整数,每个数字不超过1000。

输入格式:

输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。

输出格式:

在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。

输入样例:

11
4 981 10 -17 0 -20 29 50 8 43 -5

输出样例:

-20 -17 -5 0 4 8 10 29 43 50 981
#include <iostream>
#include <stdio.h>
using namespace std;void print(int *a, int n);
void insert_sort(int *a, int n);
void bin_insertsort(int *a, int n);
void shell_sort(int *a, int n);
void bubble_sort(int *a, int n);
void quick_sort(int *a, int left, int right);
int Partition(int *a, int left, int right);
/*堆排序*/
void sift(int *a, int low, int high);
void heap_sort(int *a, int n);int main(){int n, a[100005];scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d", &a[i]);}//三种插入排序//insert_sort(a, n);//bin_insertsort(a, n);//shell_sort(a, n);//两种交换排序//bubble_sort(a, n);//quick_sort(a, 0, n-1);//两种选择排序,简单选择排序select_sort不写了heap_sort(a, n);//还有归并排序和基数排序,适合用作外排//...print(a, n);return 0;
}void heap_sort(int *a, int n){for(int i=(n-1)/2; i>=0; i--){sift(a, i, n-1);}for(int i=n-1; i>=1;){swap(a[i], a[0]);i--;sift(a, 0, i);}
}
void sift(int *a, int low, int high){int i = low, j = 2*i+1;int temp = a[i];while(j <= high){if(j < high && a[j]<a[j+1]){j++;}if(temp < a[j]){a[i] = a[j];i = j;j = 2*i+1;}else{break;}}a[i] = temp;
}void quick_sort(int *a, int left, int right) {if (left < right) {int pivot_index = Partition(a, left, right); // 返回一次划分后基准的位置quick_sort(a, left, pivot_index - 1); // 对划分后的左边排序quick_sort(a, pivot_index + 1, right); // 对划分后的右边排序}return;
}int Partition(int *a, int left, int right) {int temp = a[left]; // 最左边元素作为基准while (left < right) {while (left < right && a[right] >= temp) {right--;}a[left] = a[right];while (left < right && a[left] <= temp) {left++;}a[right] = a[left];}a[left] = temp; // 基准归位return left; // 返回基准位置
}void bubble_sort(int *a, int n){int flag = 0;for(int i = 0; i < n-1; i++){//进行n-1趟排序for(int j = n-1; j > i; j--){if (a[j] < a[j - 1]) {int temp = a[j];a[j] = a[j - 1];a[j - 1] = temp;flag = 1;}}if(!flag) break;}
}
void shell_sort(int *a, int n){for(int d=n/2; d>=1; d/=2){for(int i = d; i < n; i++){ // 0, 0 + dk, 0 + 2*dk...int temp = a[i];if(a[i-d] > temp){int j = i-d;for(; j>=0 && a[j]>temp; j-=d){a[j+d] = a[j];}a[j+d] = temp;}}}
}
void bin_insertsort(int *a, int n){for(int i = 1; i < n; i++){int left = 0, right = i-1, temp = a[i], mid;while(left <= right){mid = (right + left)/2;if(temp < a[mid]){right = mid-1;}else{left = mid+1;}}//此处a[left] > temp,将a[left~i-1]后移一位for(int j = i-1; j>=left; j--){a[j+1] = a[j];}a[left] = temp;}
}
//插入排序
void insert_sort(int *a, int n){//初始0~0作为有序区,之后有序区为0~i,逐渐扩大for(int i = 1; i < n; i++){if(a[i] < a[i-1]){int temp = a[i];int j = i - 1;for(; j>=0 && temp < a[j]; j--){a[j+1] = a[j];}a[j+1] = temp;}}
}
void print(int *a, int n){int flag = 0;for(int i = 0; i < n; i++){if(flag){printf(" ");}else{flag = 1;}printf("%d", a[i]);}//printf("\n");
}

排序算法比较

名称 最坏时间复杂度 平均时间复杂度 最好时间复杂度 空间复杂度 是否稳定 比较次数 排序总趟数
直接插入排序 O(n2),初始完全逆序 O(n2) O(n),初始完全顺序 O(1) 稳定 最好n-1次,最坏n(n-1)/2次 n-1趟
折半插入排序 O(n2) O(n2) O(n) O(1) 稳定 最好n-1次,最坏应该是(log1+log2+…log(n-1)*n-1次。要注意的是虽然比较次数少了,但是元素的移动次数并没有减少,初始序列有多少逆序对,就有多少次移动次数。 n-1趟
希尔排序 O(n2) O(1) 不稳定 与增量序列、子序列的排序算法有关 与增量序列有关
冒泡排序 O(n2) O(n2) O(n) O(1) 稳定 最好n-1次,最坏n(n-1)/2次 n-1趟
快速排序 O(n2) O(nlog2n) O(nlog2n) O(log2n),最坏情况下会达到O(n) 不稳定 与初始序列顺序有关 最好logn趟,最坏n-1趟
简单选择排序 O(n2) O(n2) O(n2) O(1) 不稳定 n(n-1)/2次 n-1趟,每趟找一个最小值
堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定 定理:堆排序处理N个不同元素的随机排列的平均比较次数是2NlogN-O(NloglogN)
归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) 稳定
基数排序 O(d(n+r)) O(d(n+r)) O(d(n+r)) 稳定

7-13 统计工龄 (20分)(桶排序或直接用map)

给定公司N名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。

输入格式:

输入首先给出正整数N(≤105),即员工总人数;随后给出N个整数,即每个员工的工龄,范围在[0, 50]。

输出格式:

按工龄的递增顺序输出每个工龄的员工个数,格式为:“工龄:人数”。每项占一行。如果人数为0则不输出该项。

输入样例:

8
10 2 0 5 7 2 5 2

输出样例:

0:1
2:3
5:2
7:1
10:1
#include <iostream>
#include <map>
using namespace std;int main(){map<int, int> m;int n;cin >> n;for(int i = 0; i < n; i++){int t;cin >> t;m[t]++;}for(map<int,int>::iterator it = m.begin(); it!=m.end(); ++it){cout << it->first <<":" << it->second << endl;}return 0;
}

7-14 电话聊天狂人 (25分)(stl-map应用)

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。

输入格式:

输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。

输出格式:

在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。

输入样例:

4
13005711862 13588625832
13505711862 13088625832
13588625832 18087925832
15005713862 13588625832

输出样例:

13588625832 3
#include <iostream>
#include <map>
using namespace std;int main(){map<string, int> m;int n, count = 0;cin >> n;for(int i = 0; i < n; i++){string a, b;cin >> a >> b;m[a]++;m[b]++;}int maxx = -1;string ans;for(map<string,int>::iterator it = m.begin(); it!=m.end(); ++it){if(it->second > maxx){count = 1;maxx = it->second;ans = it->first;}else if(it->second == maxx){count++;if(ans.compare(it->first) > 0)	//当前遇到的电话比ans小(字典序),就返回小于0的数ans = it->first;}}cout << ans << " " << maxx;if(count!=1) cout <<" " <<count;return 0;
}

std::string::compare

Return Value

Returns a signed integral indicating the relation between the strings:

value relation between compared string and comparing string
0 They compare equal
<0 Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter.
>0 Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.

7-15 QQ帐户的申请与登陆 (25分)(用stl-map简单模拟)

实现QQ新帐户申请和老帐户登陆的简化版功能。最大挑战是:据说现在的QQ号码已经有10位数了。

输入格式:

输入首先给出一个正整数N(≤105),随后给出N行指令。每行指令的格式为:“命令符(空格)QQ号码(空格)密码”。其中命令符为“N”(代表New)时表示要新申请一个QQ号,后面是新帐户的号码和密码;命令符为“L”(代表Login)时表示是老帐户登陆,后面是登陆信息。QQ号码为一个不超过10位、但大于1000(据说QQ老总的号码是1001)的整数。密码为不小于6位、不超过16位、且不包含空格的字符串。

输出格式:

针对每条指令,给出相应的信息:

1)若新申请帐户成功,则输出“New: OK”;
2)若新申请的号码已经存在,则输出“ERROR: Exist”;
3)若老帐户登陆成功,则输出“Login: OK”;
4)若老帐户QQ号码不存在,则输出“ERROR: Not Exist”;
5)若老帐户密码错误,则输出“ERROR: Wrong PW”。

输入样例:

5
L 1234567890 myQQ@qq.com
N 1234567890 myQQ@qq.com
N 1234567890 myQQ@qq.com
L 1234567890 myQQ@qq
L 1234567890 myQQ@qq.com

输出样例:

ERROR: Not Exist
New: OK
ERROR: Exist
ERROR: Wrong PW
Login: OK
#include <iostream>
#include <map>
using namespace std;int main(){map<string, string> m;int n;cin >> n;for(int i = 0; i < n; i++){char op;string a, b;cin >> op >> a >> b;if(op == 'L'){  //老帐户登陆if(m.count(a) <= 0){   // 老帐户QQ号码不存在cout << "ERROR: Not Exist" <<endl;}else{         //老帐户登陆成功if( b.compare(m[a]) == 0){cout << "Login: OK" <<endl;}else{  //老帐户密码错误cout << "ERROR: Wrong PW" <<endl;}}}else if(op == 'N'){//申请账户if(m.count(a) > 0){//若新申请的号码已经存在,则输出“ERROR: Exist”;cout <<"ERROR: Exist"<<endl;}else{//新申请帐户成功cout <<"New: OK"<<endl;m[a] = b;}}}return 0;
}

7-16 一元多项式求导 (20分)

设计函数求一元多项式的导数。

输入格式:

以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

输出格式:

以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。

输入样例:

3 4 -5 2 6 1 -2 0

输出样例:

12 3 -10 1 6 0
#include <stdio.h>
#include <stdlib.h>int main(){int coff, exp;  int flag = 0;while(scanf("%d %d",&coff,&exp)!=EOF){if(exp){if( flag )printf(" ");  //如果不是第一个数就先输出一个空格elseflag = 1;printf("%d %d",coff*exp,exp-1);}else break;}if(!flag){printf("0 0");}return 0;
}

7-17 汉诺塔的非递归实现 (25分)

借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。

输入格式:

输入为一个正整数N,即起始柱上的盘数。

输出格式:

每个操作(移动)占一行,按柱1 -> 柱2的格式输出。

输入样例:

3

输出样例:

a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c

递归实现,cout会超时,用printf比较快:

#include <stdio.h>
#include <iostream>
using namespace std;int main(){void hanoi(int n, char one, char two, char three);int n;cin >> n;hanoi(n, 'a', 'b', 'c');return 0;
}
//将n个盘子从one座借助two座,移动到three座
void hanoi(int n, char one, char two, char three){if(n == 1){printf("%c -> %c\n",one, three);}else{//先递归的解决n-1规模的问题, 将A塔中n-1个盘子借助C塔移动到B塔hanoi(n-1, one, three, two);//然后将最大的盘子移动到C塔printf("%c -> %c\n",one, three);hanoi(n-1, two, one, three);}
}

非递归实现

7-18 银行业务队列简单模拟 (25分)(模拟)

设某银行有A、B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 —— 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客。给定到达银行的顾客序列,请按业务完成的顺序输出顾客序列。假定不考虑顾客先后到达的时间间隔,并且当不同窗口同时处理完2个顾客时,A窗口顾客优先输出。

输入格式:

输入为一行正整数,其中第1个数字N(≤1000)为顾客总数,后面跟着N位顾客的编号。编号为奇数的顾客需要到A窗口办理业务,为偶数的顾客则去B窗口。数字间以空格分隔。

输出格式:

按业务处理完成的顺序输出顾客的编号。数字间以空格分隔,但最后一个编号后不能有多余的空格。

输入样例:

8 2 1 3 9 4 11 13 15

输出样例:

1 3 2 9 11 4 13 15

7-19 求链式线性表的倒数第K项 (20分)(vector简单使用)

给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。

输入格式:

输入首先给出一个正整数K,随后是若干非负整数,最后以一个负整数表示结尾(该负数不算在序列内,不要处理)。

输出格式:

输出倒数第K个位置上的数据。如果这个位置不存在,输出错误信息NULL

输入样例:

4 1 2 3 4 5 6 7 8 9 0 -1

输出样例:

7
#include <iostream>
#include <vector>using namespace std;
int main(){vector<int> a;int n, x;scanf("%d", &n);while(1){scanf("%d", &x);if(x < 0) break;a.push_back(x);}int count = a.size();if(n>0 && n<=count) cout<<a[count-n]<<endl;else cout<<"NULL";return 0;
}

7-23 还原二叉树 (25分)(树)

给定一棵二叉树的先序遍历序列和中序遍历序列,要求计算该二叉树的高度。

输入格式:

输入首先给出正整数N(≤50),为树中结点总数。下面两行先后给出先序和中序遍历序列,均是长度为N的不包含重复英文字母(区别大小写)的字符串。

输出格式:

输出为一个整数,即该二叉树的高度。

输入样例:

9
ABDFGHIEC
FDHGIBEAC

输出样例:

5

可以建树后再找树的高度,也可以递归的遍历序列,递归树的最大深度就是树的高度。

#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;int depth(char *a, char *b, int len){if(len==0) return 0;int i;//先序序列中遍历顺序:根左右,对应中序序列的节点左边是左子树,右边是右子树for(i = 0; i < len; i++){if(b[i] == a[0]){break;}}//在b[0]~b[i-1]搜索左子树,int x = depth(a+1, b, i) + 1;//在b[i+1]~b[n-i]搜索右子树int y = depth(a+i+1, b+i+1, len-i-1) + 1;return x > y ? x : y;
}
int main(){char a[52]; //first_orderchar b[52]; //in_orderint n;cin >> n;cin >> a >> b;cout << depth(a, b, n);return 0;
}

7-24 树种统计 (25分)(string类型的输入和输出)

随着卫星成像技术的应用,自然资源研究机构可以识别每一棵树的种类。请编写程序帮助研究人员统计每种树的数量,计算每种树占总数的百分比。

输入格式:

输入首先给出正整数N(≤105),随后N行,每行给出卫星观测到的一棵树的种类名称。种类名称由不超过30个英文字母和空格组成(大小写不区分)。

输出格式:

按字典序递增输出各种树的种类名称及其所占总数的百分比,其间以空格分隔,保留小数点后4位。

输入样例:

29
Red Alder
Ash
Aspen
Basswood
Ash
Beech
Yellow Birch
Ash
Cherry
Cottonwood
Ash
Cypress
Red Elm
Gum
Hackberry
White Oak
Hickory
Pecan
Hard Maple
White Oak
Soft Maple
Red Oak
Red Oak
White Oak
Poplan
Sassafras
Sycamore
Black Walnut
Willow

输出样例:

Ash 13.7931%
Aspen 3.4483%
Basswood 3.4483%
Beech 3.4483%
Black Walnut 3.4483%
Cherry 3.4483%
Cottonwood 3.4483%
Cypress 3.4483%
Gum 3.4483%
Hackberry 3.4483%
Hard Maple 3.4483%
Hickory 3.4483%
Pecan 3.4483%
Poplan 3.4483%
Red Alder 3.4483%
Red Elm 3.4483%
Red Oak 6.8966%
Sassafras 3.4483%
Soft Maple 3.4483%
Sycamore 3.4483%
White Oak 10.3448%
Willow 3.4483%
Yellow Birch 3.4483%

难点是输入和输出

#include <iostream>
#include <string>
#include <map>
#include <stdio.h>
using namespace std;int main(){map<string, int> m;int n;cin>>n;getchar();  //这个坑踩了好久!!::当有string类型的输入前面有其他类型输入时,用getchar()吃回车for(int i = 0; i < n; i++){string s;getline(cin, s);//cin不接受空格,TAB等键的输入,遇到这些键,字符串会终止//char[]可用gets(),string类型的只能用getline(cin,s)m[s]++;}for(map<string,int>::iterator it = m.begin(); it!=m.end(); it++){cout<<it->first<<" ";printf("%.4f%%\n", it->second/(double)n*100);}return 0;
}

7-25 朋友圈 (25分)(并查集)

某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友,且B和C是朋友,则A和C也是朋友。请编写程序计算最大朋友圈中有多少人。

输入格式:

输入的第一行包含两个正整数N(≤30000)和M(≤1000),分别代表学校的学生总数和俱乐部的个数。后面的M行每行按以下格式给出1个俱乐部的信息,其中学生从1~N编号:

第i个俱乐部的人数Mi(空格)学生1(空格)学生2 … 学生Mi

输出格式:

输出给出一个整数,表示在最大朋友圈中有多少人。

输入样例:

7 4
3 1 2 3
2 1 4
3 5 6 7
1 6

输出样例:

4

并查集及其优化详解

#include <iostream>
#include <stdio.h>
using namespace std;
const int MAXN = 30005;
int f[MAXN], res[MAXN];
int Find(int x){if(f[x]!=x)f[x] = Find(f[x]);return f[x];
}
void Union(int x, int y){int p1 = Find(x);int p2 = Find(y);f[p1] = p2;
}
int main(){int n, m;cin >> n >> m;for(int i = 1; i <= n; i++){f[i] = i;}for(int i = 0; i < m; i++){int x, root;scanf("%d%d", &x, &root);root = Find(root);for(int k = 0; k < x-1; k++){int t;scanf("%d", &t);Union(root, t);}}int ans = 0;for(int i = 1; i <= n; i++){int root = Find(i);res[root]++;ans = max(ans, res[root]);}cout << ans;return 0;
}

7-26 Windows消息队列 (25分)(stl-priority_queue)

消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从队列中按照优先级获取消息。请注意优先级值低意味着优先级高。请编辑程序模拟消息队列,将消息加到队列中以及从队列中获取消息。

输入格式:

输入首先给出正整数N(≤105),随后N行,每行给出一个指令——GETPUT,分别表示从队列中取出消息或将消息添加到队列中。如果指令是PUT,后面就有一个消息名称、以及一个正整数表示消息的优先级,此数越小表示优先级越高。消息名称是长度不超过10个字符且不含空格的字符串;题目保证队列中消息的优先级无重复,且输入至少有一个GET

输出格式:

对于每个GET指令,在一行中输出消息队列中优先级最高的消息的名称和参数。如果消息队列中没有消息,输出EMPTY QUEUE!。对于PUT指令则没有输出。

输入样例:

9
PUT msg1 5
PUT msg2 4
GET
PUT msg3 2
PUT msg4 4
GET
GET
GET
GET

输出样例:

msg2
msg3
msg4
msg1
EMPTY QUEUE!
#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;struct news{char name[12];int pqlevel;friend bool operator <(news a, news b){return a.pqlevel > b.pqlevel;}
};int main(){int n;char op[10];priority_queue<news> pq;cin >> n;for(int i = 1; i <= n; i++){scanf("%s", op);if(op[0] == 'P'){struct news t;scanf("%s%d", t.name, &t.pqlevel);pq.push(t);}else if(op[0] == 'G'){if(pq.empty()){printf("EMPTY QUEUE!\n");}else{struct news t = pq.top();printf("%s\n", t.name);pq.pop() ;}}}return 0;
}

priority_queue常用操作

  • (constructor)

    Construct priority queue (public member function )

  • empty

    Test whether container is empty (public member function )

  • size

    Return size (public member function )

  • top

    Access top element (public member function )

  • push

    Insert element (public member function )

  • emplace

    Construct and insert element (public member function )

  • pop

    Remove top element (public member function )

  • swap

    Swap contents (public member function )

7-29 修理牧场 (25分)(优先队列实现哈夫曼树)

农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L**i个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是L**i的总和。

但是农夫自己没有锯子,请人锯木的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。如果第一次将木头锯成15和5,则第二次锯木头花费15,总花费为35(大于32)。

请编写程序帮助农夫计算将木头锯成N块的最少花费。

输入格式:

输入首先给出正整数N(≤104),表示要将木头锯成N块。第二行给出N个正整数(≤50),表示每段木块的长度。

输出格式:

输出一个整数,即将木头锯成N块的最少花费。

输入样例:

8
4 5 1 2 1 3 1 1

输出样例:

49

C++ priority_queue底层是用堆实现的

#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;int main(){int n;priority_queue<int, vector<int>, greater<int>> pq;cin >> n;for(int i = 0; i < n; i++){int x;scanf("%d", &x);pq.push(x);}int ans = 0;while(pq.size()>1){int a = pq.top();pq.pop();int b = pq.top();pq.pop();int t = a + b;cout << t<<endl;ans += t;pq.push(t);}cout << ans;return 0;
}

7-31 笛卡尔树 (25分)(BST判断的变式)

笛卡尔树是一种特殊的二叉树,其结点包含两个关键字K1和K2。首先笛卡尔树是关于K1的二叉搜索树,即结点左子树的所有K1值都比该结点的K1值小,右子树则大。其次所有结点的K2关键字满足优先队列(不妨设为最小堆)的顺序要求,即该结点的K2值比其子树中所有结点的K2值小。给定一棵二叉树,请判断该树是否笛卡尔树。

输入格式:

输入首先给出正整数N(≤1000),为树中结点的个数。随后N行,每行给出一个结点的信息,包括:结点的K1值、K2值、左孩子结点编号、右孩子结点编号。设结点从0~(N-1)顺序编号。若某结点不存在孩子结点,则该位置给出−1。

输出格式:

输出YES如果该树是一棵笛卡尔树;否则输出NO

输入样例1:

6
8 27 5 1
9 40 -1 -1
10 20 0 3
12 21 -1 4
15 22 -1 -1
5 35 -1 -1

输出样例1:

YES

输入样例2:

6
8 27 5 1
9 40 -1 -1
10 20 0 3
12 11 -1 4
15 22 -1 -1
50 35 -1 -1

输出样例2:

NO

可以递归的判断BST,函数一定要传一个区间,否则就会出现子树都满足要求,但整个树不满足的情况。

比如:3/ \2   4/ \
1   3
每一个子树都满足性质,但整个树不满足性质,所以判断BST一定要传入一段区间

另外判断是否是BST还可以建树,利用BST的中序遍历是从小到大的有序序列这个性质

#include <iostream>
#include <stdio.h>
#include <queue>
#include <climits>
using namespace std;
const int INF = INT_MAX;
const int MIN = INT_MIN;
struct Node{int k1, k2, lchild, rchild;
}node[1005];bool IsVaild(int i, int k1_min, int k1_max){int lchild = node[i].lchild, rchild = node[i].rchild;int k1 = node[i].k1, k2 = node[i].k2;if(lchild == -1 && rchild == -1)    //空树返回真return true;if(lchild!=-1){         //左树不为空if(node[lchild].k1 >= k1 || node[lchild].k1 <= k1_min)  //左树不满足BST性质return false;if(node[lchild].k2 <= k2)       //是否满足最小堆的性质return false;}if(rchild!=-1){         //右树不为空if(node[rchild].k1 <= k1 || node[rchild].k1 >= k1_max)  //右树不满足BST性质return false;if(node[rchild].k2 <= k2)   //是否满足最小堆的性质return false;}bool flag1 = true, flag2 = true;if(lchild != -1){flag1 = IsVaild(lchild, k1_min, k1);}if(rchild != -1){flag2 = IsVaild(rchild, k1, k1_max);}return  flag1 && flag2;
}
int main(){int n;cin >> n;int root = -1;int vis[1005]={0};for(int i = 0; i < n; i++){cin >> node[i].k1 >> node[i].k2 >> node[i].lchild >> node[i].rchild;}//找根节点for(int i = 0; i < n; i++){vis[node[i].lchild] = 1;vis[node[i].rchild] = 1;}for(int i = 0; i < n; i++){if(!vis[i]) {root = i;break;}}if(IsVaild(root, MIN, INF)){cout << "YES";}else{cout << "NO";}return 0;
}

7-32 哥尼斯堡的“七桥问题” (25分)(欧拉回路)

哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。

img

可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。

这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个无向图,问是否存在欧拉回路?

输入格式:

输入第一行给出两个正整数,分别是节点数N (1≤N≤1000)和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。

输出格式:

若欧拉回路存在则输出1,否则输出0。

输入样例1:

6 10
1 2
2 3
3 1
4 5
5 6
6 4
1 4
1 6
3 4
3 6

输出样例1:

1

输入样例2:

5 8
1 2
1 3
2 3
2 4
2 5
5 3
5 4
3 4

输出样例2:

0

1.欧拉通路、欧拉回路、欧拉图

无向图:

  1. 设G是连通无向图,则称经过G的每条边一次并且仅一次的路径为欧拉通路;
  2. 如果欧拉通路是回路(起点和终点是同一个顶点),则称此回路为欧拉回路(Euler circuit);
  3. 具有欧拉回路的无向图G称为欧拉图(Euler graph)。
    有向图:
  4. 设D是有向图,D的基图连通,则称经过D的每条边一次并且仅一次的有向路径为有向欧拉通路;
  5. 如果有向欧拉通路是有向回路,则称此有向回路为有向欧拉回路(directed Euler circuit);
  6. 具有有向欧拉回路的有向图D称为有向欧拉图(directed Euler graph)。

2.欧拉回路的应用

  • 哥尼斯堡七桥问题
  • 一笔画问题。
  • 旋转鼓轮的设计

3.欧拉回路的判定

判断欧拉路是否存在的方法

有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。

无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。

判断欧拉回路是否存在的方法

有向图:图连通,所有的顶点出度=入度。

无向图:图连通,所有顶点都是偶数度。

https://blog.csdn.net/flx413/article/details/53471609

#include <bits/stdc++.h>
using namespace std;
#define MAXN 1010int a[MAXN][MAXN]={0},vis[MAXN]= {0},cnt[MAXN]= {0};
int n, m, b, c;
void dfs(int cur){vis[cur] = 1;for(int i = 1; i <= n; i++){if(!vis[i] && a[cur][i]){dfs(i);}}return;
}
int main(){cin >> n >> m;for(int i = 0; i < m; i++){scanf("%d%d", &b, &c);	//别用cina[b][c]=a[c][b] = 1;cnt[b]++; //记录每一个顶点的度数cnt[c]++;}dfs(1);int f = 1;for(int i=1; i<=n; i++){if(!vis[i] || cnt[i]%2 == 1){//是否存在奇数度数的顶点f = 0;break;}}cout << f;return 0;
}

7-33 地下迷宫探索 (30分)(dfs遍历图)

地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式。地道网是房连房、街连街、村连村的地下工事,如下图所示。

img

我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智。在现在和平发展的年代,对多数人来说,探索地下通道或许只是一种娱乐或者益智的游戏。本实验案例以探索地下通道迷宫作为内容。

假设有一个地下通道迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关。请问你如何从某个起点开始在迷宫中点亮所有的灯并回到起点?

img

输入格式:

输入第一行给出三个正整数,分别表示地下迷宫的节点数N(1<N≤1000,表示通道所有交叉点和端点)、边数M(≤3000,表示通道数)和探索起始节点编号S(节点从1到N编号)。随后的M行对应M条边(通道),每行给出一对正整数,分别是该条边直接连通的两个节点的编号。

输出格式:

若可以点亮所有节点的灯,则输出从S开始并以S结束的包含所有节点的序列,序列中相邻的节点一定有边(通道);否则虽然不能点亮所有节点的灯,但还是输出点亮部分灯的节点序列,最后输出0,此时表示迷宫不是连通图。

由于深度优先遍历的节点序列是不唯一的,为了使得输出具有唯一的结果,我们约定以节点小编号优先的次序访问(点灯)。在点亮所有可以点亮的灯后,以原路返回的方式回到起点。

输入样例1:

6 8 1
1 2
2 3
3 4
4 5
5 6
6 4
3 6
1 5

输出样例1:

1 2 3 4 5 6 5 4 3 2 1

输入样例2:

6 6 6
1 2
1 3
2 3
5 4
6 5
6 4

输出样例2:

6 4 5 4 6 0
#include <bits/stdc++.h>
using namespace std;
#define MAXN 1010int a[MAXN][MAXN]= {0}, vis[MAXN]= {0};
int cnt = 1, n, m, s, f=0;
void dfs(int x){if(f)printf(" ");f++;printf("%d", x);for(int i = 1; i <= n;  i++){if(!vis[i]&&a[x][i]){vis[i] = 1;cnt++;dfs(i);printf(" %d", x);}}
}
int main()
{cin >> n >> m >> s;for(int i = 1; i <= m; i++){int b,c;scanf("%d%d", &b, &c);a[b][c] = a[c][b] = 1;}vis[s] = 1;dfs(s);if(cnt < n)cout<<" 0";return 0;
}

7-34 任务调度的合理性 (25分)(验证是否为拓扑序列)

假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。

比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比如C程序设计和数据结构两门课,必须先学习前者。

但是需要注意的是,对一组子任务,并不是任意的任务调度都是一个可行的方案。比如方案中存在“子任务A依赖于子任务B,子任务B依赖于子任务C,子任务C又依赖于子任务A”,那么这三个任务哪个都不能先执行,这就是一个不可行的方案。你现在的工作是写程序判定任何一个给定的任务调度是否可行。

输入格式:

输入说明:输入第一行给出子任务数N(≤100),子任务按1~N编号。随后N行,每行给出一个子任务的依赖集合:首先给出依赖集合中的子任务数K,随后给出K个子任务编号,整数之间都用空格分隔。

输出格式:

如果方案可行,则输出1,否则输出0。

输入样例1:

12
0
0
2 1 2
0
1 4
1 5
2 3 6
1 3
2 7 8
1 7
1 10
1 7

输出样例1:

1

输入样例2:

5
1 4
2 1 4
2 2 5
1 3
0

输出样例2:

0
#include <bits/stdc++.h>
using namespace std;
#define MAXN 105int a[MAXN] = {0}, g[MAXN][MAXN];//a[i]为节点i的入度
int main(){int m, n, t;cin >> n;for(int i = 1; i <= n; i++){cin >> m;for(int j = 1; j <= m; j++){cin >> t;g[t][i] = 1;a[i]++;}}queue<int> q;for(int i = 1; i <= n; i++){if(a[i]==0) q.push(i);}while(q.size() > 0){int cur = q.front();q.pop();for(int i = 1; i <= n; i++){if(g[cur][i]!=0){a[i]--;if(a[i] == 0){q.push(i);}}}}int f = 1;for(int i = 1; i <= n; i++){if(a[i]!=0){    //经过拓扑排序后还有入度为0的点,说明有向图有回路了f = 0;break;}}cout << f;
}

7-37 模拟EXCEL排序 (25分)(重载sort函数进行自定义排序)

Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。

输入格式:

输入的第一行包含两个正整数N(≤105) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性用1个空格隔开。

输出格式:

N行中输出按要求排序后的结果,即:当C=1时,按学号递增排序;当C=2时,按姓名的非递减字典序排序;当C=3时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。

输入样例:

3 1
000007 James 85
000010 Amy 90
000001 Zoe 60

输出样例:

000001 Zoe 60
000007 James 85
000010 Amy 90
#include <bits/stdc++.h>
using namespace std;
struct student{char sno[7];char name[10];int score;
}s[100005];bool cmp1(student a, student b){if(strcmp(a.sno, b.sno)>0){return b.sno < a.sno;}return b.sno > a.sno;
}
bool cmp2(student a, student b){if(strcmp(a.name, b.name)>0){return b.name < a.name;}return b.name > a.name;
}
bool cmp3(student a, student b){if(a.score == b.score){if(strcmp(a.sno, b.sno)>0){return b.sno < a.sno;}return b.sno > a.sno;}return a.score < b.score;
}
int main(){int n, c;cin >> n >> c;for(int i = 0; i < n; i++){scanf("%s%s%d", s[i].sno, s[i].name, &s[i].score);}if(c == 1){sort(s, s+n, cmp1);for(int i = 0; i < n; i++){printf("%s %s %d\n", s[i].sno, s[i].name, s[i].score);}}else if(c == 2){sort(s, s+n, cmp2);for(int i = 0; i < n; i++){printf("%s %s %d\n", s[i].sno, s[i].name, s[i].score);}}else if(c == 3){sort(s, s+n, cmp3);for(int i = 0; i < n; i++){printf("%s %s %d\n", s[i].sno, s[i].name, s[i].score);}}return 0;
}

7-38 寻找大富翁 (25分)(优先队列实现最大堆)

胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人。假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁。

输入格式:

输入首先给出两个正整数N(≤106)和M(≤10),其中N为总人数,M为需要找出的大富翁数;接下来一行给出N个人的个人资产值,以百万元为单位,为不超过长整型范围的整数。数字间以空格分隔。

输出格式:

在一行内按非递增顺序输出资产排前M位的大富翁的个人资产值。数字间以空格分隔,但结尾不得有多余空格。

输入样例:

8 3
8 12 7 3 20 9 5 18

输出样例:

20 18 12
#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;int main(){int n, k;priority_queue<int, vector<int>, less<int>> pq;//less规定优先队列的顺序为从大到小排列,即队头为最大的cin >> n >> k;for(int i = 0; i < n; i++){int x;scanf("%d", &x);pq.push(x);}int flag = 0;while(k-- && pq.size()>0){if(flag){cout << " ";}else{flag = 1;}int t = pq.top();pq.pop();cout <<t;}return 0;
}

7-39 魔法优惠券 (25分)(贪心)

在火星上有个魔法商店,提供魔法优惠券。每个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵,可以得到K倍该商品价值的回报!该商店还免费赠送一些有价值的商品,但是如果你在领取免费赠品的时候使用面值为正的优惠劵,则必须倒贴给商店K倍该商品价值的金额…… 但是不要紧,还有面值为负的优惠劵可以用!(真是神奇的火星)

例如,给定一组优惠劵,面值分别为1、2、4、-1;对应一组商品,价值为火星币M$7、6、-2、-3,其中负的价值表示该商品是免费赠品。我们可以将优惠劵3用在商品1上,得到M$28的回报;优惠劵2用在商品2上,得到M$12的回报;优惠劵4用在商品4上,得到M$3的回报。但是如果一不小心把优惠劵3用在商品4上,你必须倒贴给商店M$12。同样,当你一不小心把优惠劵4用在商品1上,你必须倒贴给商店M$7。

规定每张优惠券和每件商品都只能最多被使用一次,求你可以得到的最大回报。

输入格式:

输入有两行。第一行首先给出优惠劵的个数N,随后给出N个优惠劵的整数面值。第二行首先给出商品的个数M,随后给出M个商品的整数价值。N和M在[1, 106]之间,所有的数据大小不超过230,数字间以空格分隔。

输出格式:

输出可以得到的最大回报。

输入样例:

4 1 2 4 -1
4 7 6 -2 -3

输出样例:

43

给定两组数字,求这两组数字乘积的最大和

排序后贪心,每次取乘积为正的并且最大的乘积

#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
#define maxn 1000005
int main(){int a[maxn], b[maxn];int n;cin >> n;for(int i = 0; i < n; i++){scanf("%d", &a[i]);}cin >> n;for(int i = 0; i < n; i++){scanf("%d", &b[i]);}sort(a, a+n);sort(b, b+n);int sum = 0;int i;for(i = n-1; i>=0; i--){	//正*正 = 正if(a[i]>0 && b[i]>0){sum += a[i]*b[i];}else{break;}}for(int j = 0; j < i; j++){	//负*负 = 负if(a[j]<0 && b[j]<0){sum += a[j]*b[j];}else{break;}}cout << sum;return 0;
}

7-40 奥运排行榜 (25分)

7-41 PAT排名汇总 (25分)

都是排序题,先跳过

7-50 畅通工程之局部最小花费问题

https://blog.csdn.net/qq_41342326/article/details/108233771

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

相关文章

  1. Java初学总结(十七)学生管理系统

    package com.wangxing.bean; /*** 保存学生信息的java类* @author Administrator**/ public class Student {//学生学号private int stuid;//学生姓名private String stuname;//学生年龄private int stuage;//学生地址private String stuaddress;//由于上面定义的保存学…...

    2024/5/6 21:42:42
  2. Swagger2中配置添加全局header

    目录引入maven依赖添加配置类说明 引入maven依赖 <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version> </dependency> <dependency><groupId>io.s…...

    2024/4/25 22:13:42
  3. 应用支撑平台的演变

    1.认知过程 一开始做售前,碰到了“五横两纵图”,其中应用支撑平台是长这样的:细看了文档内容发现,是公司本身的开发环境(我们暂且称之为“公司1”),“公司1”是这样描述的:“本公司多年来在政府电子政务领域积累了丰富的行业知识,结合行业特点,按照SOA思想设计,以业…...

    2024/4/10 11:18:08
  4. 扩展Vue.js组件

    您的Vue应用程序中是否有共享类似选项的组件,甚至模板标记?使用公共选项和标记创建基本组件,然后扩展基本组件以创建子组件,这是一个好主意。这样的体系结构将帮助您在代码中应用DRY原则(不要重复您自己),这将使您的代码更具可读性,并减少错误的可能性。Vue提供了一些功能…...

    2024/4/30 17:28:19
  5. 浏览器重置样式

    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin: 0;padding: 0 } body, button, input, select, textarea { font: 12px “microsoft yahei”;line-height: 1.5;-ms-overf…...

    2024/4/20 15:42:10
  6. 【Java】SpringBoot中通过java代码实现忽略SSL证书

    //工具类 package com.oauth.utils;import org.springframework.stereotype.Component;import java.security.cert.CertificateException; import java.security.cert.X509Certificate;import javax.annotation.PostConstruct; import javax.net.ssl.HostnameVerifier; import …...

    2024/4/20 19:33:22
  7. GRE 词汇 常用的词缀

    本文主要内容来自《GRE 核心词汇 助记与精炼》第2版 ab- [away] abdicate [say away] 正式放弃(权力、责任) ad- [to] vale [well] valediction [say well] 告别、告别词 vin [同vim,精力] vindicate [有力地说] 证明、证实、为…辩护、使无罪 eu- [well] eulogize [speak w…...

    2024/5/1 5:22:39
  8. git代码管理(3)—撤销操作(reset 和 checkout)

    转自大神周沫凡:https://mofanpy.com/tutorials/others/git/Git book:https://git-scm.com/book/zh/v2(p40)目录1.回到从前(reset)1.1 修改已commit的版本(--amend)1.2 取消暂存的文件(reset回到add之前:git reset HEAD )1.3 取消已经commit的文件(reset回到commit…...

    2024/4/11 21:35:33
  9. 0825学习笔记(集合)

    自动装箱和拆箱 装箱:把基本数据类型转为对应的包装类类型。 拆箱:把包装类类型转为对应的基本数据类型。 日期类 常用方法: public long getTime();获取的是对象从1970年1月1日00:00:00到现在的毫秒值 public void setTime(long time);设置时间,给毫秒值Date d1 = new D…...

    2024/4/11 21:35:32
  10. 分布式链路追踪 elasticsearch+skywalking 部署实战

    分布式链路追踪 elasticsearch+skywalking 部署实战1.安装elasticsearch1.下载安装包2.安装解压3.修改elasticsearch配置4.创建用户组,创建启动用户5.修改limit数量,调大当前用户的软硬限制,需要重新登陆系统生效6.修改内核参数vm.max_map_count7.切换到es用户,启动elastic…...

    2024/4/11 21:35:31
  11. Java强引用、弱引用及举例

    1、强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。String str = "abc";List<String> list = new Arraylist<String>();list.add(str);123 在list集合里的数据不…...

    2024/4/11 21:35:30
  12. 项目总结更新中~

    项目 Spring Spring IOC IOC:控制反转,面向对象设计思想。 DI:依赖注入,是IOC思想的实现方式。 IOC容器:是依赖注入实现的关键,本质上是一个工厂。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PHk2K3YK-1598405961143)(C:\Users\hp\AppData…...

    2024/4/11 21:35:29
  13. Firefox 多个嵌入echarts的iframe页面切换时name: “NS_ERROR_FAILURE“错误

    在使用layui开发一个项目时,遇到了这样一个问题。 用layui的tabs选项卡切换动态创建iframe模拟单页面应用。在火狐中多个含echarts的iframe页面相互切换时时报错。 columnNumber: 0 ​ data: null ​ filename: "http://localhost:25002/lib/echart/echarts.min.js"…...

    2024/4/24 12:55:23
  14. 各种GIS、遥感数据与软件

    谷歌插件、人口密度数据、不透水面数据、全国水系数据、全国道路网数据、地表覆盖数据、数字高程模型、DEM、ENVI 5.1-5.3安装包、全国行政区划、ArcGIS 10.0-10.8安装包、谷歌地球专业版、水经注代下、中英文文献代下、USGS代下等等。...

    2024/4/11 21:35:27
  15. kotlin点击事件

    kotlin几种设置点击事件方式方式一:匿名内部类方式二:实现View.OnClickListener接口的onClick方法方式三:控件添加onClick属性,对应activity或者fragment中添加对应方法 布局文件<TextViewandroid:id="@+id/test"android:layout_width="match_parent&quo…...

    2024/4/28 17:49:10
  16. 上海腾科教育达梦数据库课程干货分享数据重演

    数据库重演(DatabaseReplay)是DM中用来重现、定位和分析问题的一个重要手段,其基本原理是在数据库系统上捕获所有负载(记录外部客户端对服务器的请求),保存到二进制捕获文件,然后通过DM提供的数据库重演工具将捕获文件中的请求发送给捕获前由原始数据库备份恢复而来的重…...

    2024/4/11 21:35:25
  17. React 个人常用代码,防止采坑专用版

    目录dom事件绑定模板常用的生命周期函数ref绑定dom元素鼠标移入移出事件子元素的验证处理常用的dom事件 dom事件绑定模板 官网的示例 class class extends React.Component {constructor(props) {super(props);this.state = {number: 0};// 为了在回调中使用 `this`,这个绑定是…...

    2024/4/28 13:08:26
  18. JSTL详解(二)

    格式化标签库常用标签 把数值按照某种格式输出,比如按照年月日,小时,分钟,秒去展示就叫做格式化这种输出需要格式化取小数点前两位,取小数点后两位函数标签库常用的标签判断内容是否存在 判断是否以某个字符、字符串开头 判断是否以某个内容结尾 判断某个内容在字符串的位…...

    2024/4/23 8:40:54
  19. 结合wasm与mse技术实现的支持H.265网页播放器,为安防可视化系统带来了新突破

    我们在《wasm(WebAssembly)技术的普及为安防信息可视化系统的发展带来了哪些突破口》一文中讲过了实现和普及wasm(WebAssembly)技术的重要性,从该文中我们知道各大浏览器开始支持wasm技术,同时我们的EasyNVR(接入RTSP/Onvif流)、EasyDSS(接入RTMP推流)、EasyGBS(接入…...

    2024/4/26 21:25:47
  20. 努力成为优秀视觉工程师的一天(五)

    参考:https://www.cnblogs.com/xiaoboge/p/10539884.htmlhttps://blog.csdn.net/lanran2/article/details/790579941. ResNet网络从之前的经验我们可以知道,随着网络层数越深,网络训练的效果越好。但我们后来发现,传统的CNN网络结构随着层数加深到一定程度之后,越深的网络…...

    2024/4/11 21:35:21

最新文章

  1. 代码随想录训练营31day-动态规划4

    一、完全背包&#xff08;参考博客&#xff09; 和01背包区别在于物品可以无限次放入背包。完全背包和01背包问题唯一不同的地方就是&#xff0c;每种物品有无限件。 因此在需要在遍历顺序上进行区别&#xff0c;参考代码随想录&#xff1a; 二、518.零钱兑换II 题目求的是组…...

    2024/5/7 2:22:44
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/6 9:38:23
  3. JSON格式转换

    文章目录 1. JSON 格式2. 细节 1. JSON 格式 实体类格式&#xff1a; public class Student {public string name {get; set;}public int age {get; set;} } public class Classs {public string teacher {get; set;}public List<Student> students {get; set;} }JSON格…...

    2024/5/3 2:18:04
  4. 01背包问题 小明的背包

    2.小明的背包1 - 蓝桥云课 (lanqiao.cn) #include <bits/stdc.h> using namespace std; const int N1010;//开始写的105 开小了 样例过了但最后只过了很少一部分 int n,m; int v[N],w[N]; int f[N][N];int main() {cin>>n>>m;for(int i1;i<n;i){cin>&…...

    2024/5/5 8:41:06
  5. 前端 js 经典:字符编码详解

    前言&#xff1a;计算机只能识别二进制&#xff0c;开发语言中数据类型还有数字&#xff0c;字母&#xff0c;中文&#xff0c;特殊符号等&#xff0c;都需要转化成二进制编码才能让技术机识别。 一. 编码方式 ACSLL、Unicode、utf-8、URL 编码、base64 等。 1. ACSLL 对英语…...

    2024/5/4 10:30:35
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/6 18:23:10
  7. 【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/5/6 18:40:38
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/6 23:37:19
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/6 7:24:07
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/7 0:32:52
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/6 6:01:13
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/6 7:24:06
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/6 20:04:22
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/7 0:32:51
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/6 7:24:04
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/6 7:24:04
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/6 19:38:16
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/6 7:24:03
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/7 0:32:49
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/6 21:25:34
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/6 7:24:02
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/6 7:24:01
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/7 0:32:47
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/6 16:50:57
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在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