计算机大类专业数据结构下半期实验练习题
1068: 图的按录入顺序深度优先搜索
#include"iostream"
using namespace std;
#include"cstring"
int visited[100];
char s[100];
int a[100][100];
int n;
void dfs(int k,int n)
{if(visited[k]==0){visited[k]=1;cout<<s[k];for(int i=0;i<n;i++){if(visited[i]==0&&a[k][i]!=0){dfs(i,n);}}}
}
int main()
{cin>>n;cin>>s;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}char key=0;cin>>key;for(int i=0;i<n;i++){if(s[i]==key){dfs(i,n);}}
}
1069: 图的按录入顺序广度优先搜索
#include"iostream"
#include"cstring"
using namespace std;
int queue[100];
int visited[100];
char s[100];
int a[100][100];
void bfs(int k,int n)
{int rear=-1,front=-1;queue[++rear]=k;visited[k]=1;while(front!=rear){k=queue[++front];cout<<s[k];for(int i=0;i<n;i++){if(a[k][i]!=0&&visited[i]==0){queue[++rear]=i;visited[i]=1;}}}
}
int main() {int n;cin >> n;cin >> s;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {cin >> a[i][j];}}char key;cin >> key;for (int i = 0; i < n; i++) {if (s[i] == key) {bfs(i, n);}}return 0;
}
1070: 邻接矩阵存储简单路径
#include"iostream"
using namespace std;
#include"cstring"
int n;
int start,last;
int a[100][100];
int stu[100];
int path[100];
void dfs(int u,int t)
{path[t]=u;if(u==last){for(int i=0;i<t;i++){cout<<path[i];}cout<<last<<endl;return;}stu[u]=1;for(int i=0;i<n;i++){if(stu[i]==0&&a[u][i]==1){dfs(i,t+1);}}stu[u]=0;
}
int main()
{cin>>n;cin>>start>>last;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];} }dfs(start,0);
}
1055: 邻接矩阵到邻接表
#include"iostream"
using namespace std;
#include"cstring"
int n;
int a[100][100];
int main()
{cin>>n;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]==1){cout<<j;}}cout<<endl;}
}
1056: 邻接表到邻接矩阵
#include"iostream"
using namespace std;
#include"cstring"
#include"stdio.h"
int n;
int a[100][100];
int x;int main()
{scanf("%d",&n);getchar();for(int i=0;i<n;i++){for(int j=0;;j++){scanf("%c",&x);if(x=='\n') break;a[i][x-'0']=1;}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){printf("%d",a[i][j]);//写成cout超时}cout<<endl;}
}
1057: 有向图的出度计算
#include"iostream"
using namespace std;
#include"cstring"
#include"stdio.h"
int n,e;
int a[100][100];
int b[100];
int start,last;
int main()
{cin>>n>>e;for(int i=0;i<e;i++){cin>>start>>last;a[start][last]=1;}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]==1){b[i]++;}}}for(int i=0;i<n;i++){cout<<b[i]<<endl;}
}
1060: 无向图的最大度计算
#include"iostream"
using namespace std;
#include"cstring"
#include"stdio.h"
int n;
int a[100][100];
int mx;
int b[100];
int main()
{cin>>n;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]==1){b[i]++;}if(b[i]>mx){mx=b[i];}}}cout<<mx<<endl;for(int i=0;i<n;i++){if(b[i]==mx){cout<<i;}}
}
1062: 有向图的边存在判断
#include"iostream"
using namespace std;
#include"cstring"
#include"stdio.h"
int n;
int start,last;
int a[100][100];
int main()
{cin>>n;cin>>start>>last;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[start][last]==1){cout<<"yes";return 0;}}}cout<<"no";}
1065: 无向图的连通分量计算
#include"iostream"
using namespace std;
#include"cstring"
#include"stdio.h"
int n;
int a[100][100];
int separte;int main()
{cin>>n;for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>a[i][j];}}int sum=1;for(int i=0;i<n;i++){int separte=0;for(int j=0;j<n;j++){if(a[i][j]==1){separte=1;break;}}if(separte==0) sum++;}cout<<sum;
}
1076: 判断给定有向图是否存在回路
#include"iostream"
using namespace std;
int n;
int e;
char s[100];
char str,last;
int visited[100];
int flag;
int a[100][100];
void bfs(int j,int start)
{if(visited[j]==0){if(j==start){flag=1;return;}visited[j]=1;for(int i=0;i<n;i++){if(a[j][i]!=0&&visited[i]==0){bfs(i,start);}}visited[j]=0;}}
int main()
{cin>>n;cin>>e;for(int i=0;i<n;i++){cin>>s[i];}for(int i=0;i<e;i++){cin>>str>>last;for(int j=0;j<n;j++){if(s[j]==str){for(int k=0;k<n;k++){if(s[k]==last){a[j][k]=1; }}}}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]!=0){bfs(j,i);}}}if(flag==1) cout<<"yes";else cout<<"no";
}
1075: 求最小生成树(Prim算法)
#include<iostream>
using namespace std;
const int maxn = 100;
const int INF = 101;
typedef struct
{
int n;
int e;
char data[500];
int edge[500][500];
}Graph; typedef struct
{
int index;
int cost;
}mincost; typedef struct
{
int x;
int y;
int weight;
}EDGE; typedef struct
{
int index;
int flag;
}F; void create(Graph &G,int n ,int e)
{
int i,j,k,w;
char a,b;
for(i=0;i< n;i++)
cin>>G.data[i];
for(i=0;i< n;i++)
for(j=0;j< n;j++)
{
if(i==j)
G.edge[i][j]=0;
else
G.edge[i][j]=100;
} for(k=0;k< e;k++)
{
cin>>a;
cin>>b;
cin>>w;
for(i=0;i< n;i++)
if(G.data[i]==a) break;
for(j=0;j< n;j++)
if(G.data[j]==b) break; G.edge[i][j]=w;
G.edge[j][i]=w;
}
G.n=n;
G.e=e;
} void Prim(Graph& G,int k)
{int pe[maxn];int pn[maxn];int MIN;int v;for(int i=0;i<G.n;i++){pe[i]=G.edge[k][i];pn[i]=k;}for(int i=1;i<G.n;i++){MIN=INF;for(int j=0;j<G.n;j++){if(pe[j]!=0&&pe[j]<MIN){MIN=pe[j];v=j;}}cout<<"("<<G.data[pn[v]]<<','<<G.data[v]<<")";pe[v]=0;for(int j=0;j<G.n;j++){if(pe[j]!=0&&G.edge[v][j]<pe[j]){pe[j]=G.edge[v][j];pn[j]=v;}}}
}int main()
{
Graph my;
int n,e;
cin>>n>>e;
create(my,n,e);
Prim(my,0);
return 0;
}
1067: 有向图的邻接表存储强连通判断
#include"iostream"
using namespace std;
int n;
int e;
int str;
int last;
int a[100][100];
int main()
{cin>>n;cin>>e;for(int i=0;i<e;i++){cin>>str>>last;a[str][last]=1;}for(int i=0;i<n;i++){for(int j=0;j<n;j++){for(int k=0;k<n;k++){if(a[j][i]==1&&a[i][k]==1){a[j][k]=1;}}}}for(int i=0;i<n;i++){for(int j=0;j<n;j++){if(a[i][j]==0){cout<<"no";return 0;}}}cout<<"yes";
}
1012: 哈希表(链地址法处理冲突)
#include"iostream"
using namespace std;
int n;
int m;
int a[100][100];
int b[100];
int key;
int data;
int main()
{cin>>m;cin>>n;for(int i=0;i<n;i++){cin>>data;a[data%m][++(b[data%m])]=data;}int cnt=0;cin>>key;for(int i=0;i<n;i++){if(a[key%m][i]==key){cout<<key%m<<','<<cnt;return 0;}else{cnt++;}}cout<<"-1";
}
1013: 哈希表(开放定址法处理冲突)
#include"iostream"
#include"cstring"
using namespace std;
const int N=200003,null=0x3f3f3f3f;
int h[N];
int n;
int m;
int a[100];
int key;
int cnt;
int find(int x,int size)
{cnt=1;int t=x%size;while(h[t]!=x&&h[t]!=null){cnt++;t++;if(t==size) t=0;}return t;
}
int main()
{memset(h,0x3f,sizeof h);cin>>n;int data=0;cin>>m; for(int i=0;i<m;i++){cin>>data;h[find(data,n)]=data;}cin>>key;if(h[find(key,n)]==null) cout<<"-1";else cout<<find(key,n)<<','<<cnt;}
1011: 二叉排序树的实现和查找
#include"iostream"
using namespace std;
int a[100];
int n;
typedef struct tree
{struct tree* left,*right;char data;
}tree;
tree* buynode(char ch)
{tree* root=(tree*)malloc(sizeof(tree));root->data=ch;root->left=root->right=NULL;return root;
}
tree* insert(tree* root,int x)
{if(root==NULL){root=buynode(x);return root;}if(root->data<x){root->right=insert(root->right,x);}if(root->data>x){root->left=insert(root->left,x);}return root;
}
void create(tree*& root,int a[])
{root=NULL;for(int i=0;i<n;i++){root=insert(root,a[i]);}
}
int cnt=0;
tree* find(tree* root,int key)
{if(root==NULL) return NULL;if(key<root->data){cnt++;return find(root->left,key);}if(root->data<key){cnt++;return find(root->right,key);}if(root->data==key){return root;}
}
int key;
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>a[i];}cin>>key;tree* root=NULL;create(root,a);if(find(root,key)==NULL) cout<<"-1";else cout<<cnt+1;
}
1016: 插入排序算法实现
#include"iostream"
using namespace std;
int n;
int x;
int b[100];
int a[100];
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>a[i];}for(int i=1;i<n;i++){int end=i;int tmp=a[end];while(end-1>=0){if(a[end-1]>tmp){a[end]=a[end-1];end-=1;}}a[end]=tmp;break;}for(int i=0;i<n;i++){cout<<a[i]<<" ";}
}
1099: 希尔排序算法实现
#include"iostream"
using namespace std;
char s[100];
#include"cstring"
int n;
int a[100];
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>a[i];}int gap=5;for(int i=0;i<gap;i++){int end=i;int tmp=a[end+gap];while(end>=0){if(a[end]>tmp){a[end+gap] =a[end];end-=gap;}}a[end+gap]=tmp;}for(int i=0;i<n;i++){cout<<a[i]<<" ";}}
980: 输出利用先序遍历创建的二叉树的层次遍历序列
#include"iostream"
#include"queue"
using namespace std;
typedef struct node
{struct node* left,*right;char data;
}node,*tree;
tree create()
{tree t;char ch;cin>>ch;if(ch=='#'){return NULL;}else{t=new node;t->data=ch;t->left=create();t->right=create();}return t;
}
void f(tree t)
{queue<tree>q;q.push(t);tree p;p=q.front();while(!q.empty()){cout<<q.front()->data;p=q.front();q.pop();if(p->left!=NULL){q.push(p->left);}if(p->right!=NULL){q.push(p->right);}}
}
int main()
{tree t=create();f(t);
}
987: 输出用先序遍历创建的二叉树是否为完全二叉树的判定结果
#include"iostream"
using namespace std;
char s[100];
#include"queue"
typedef struct node
{struct node*left,*right;char data;
}node,*tree;
tree create()
{tree t;char ch;cin>>ch;if(ch=='#'){return NULL;}else{t=new node;t->data=ch;t->left=create();t->right=create();}return t;
}
bool f(tree t)
{queue<tree>q;tree p;q.push(t);p=q.front();int flag=0;while(!q.empty()){p=q.front();q.pop();if(p->left!=NULL){q.push(p->left);}else{flag=1;}if(p->right!=NULL&&flag==0){q.push(p->right);}else{return 0;}}return 1;}
int main()
{tree t=create();if(f(t)==1) cout<<"Y";else cout<<"N";
}
1098: 堆的判断
#include"iostream"
using namespace std;
char s[100];
#include"cstring"
int n;
int a[100];
int judge(int parent,int n)
{int child=parent*2;if(child<=n){if(child<n){if(a[child+1]<a[child])child++;}if(a[parent]<a[child]) return 1;else return 0;}
}
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=n/2;i>=1;i--){if(judge(i,n)==0){cout<<"No";return 0;}}cout<<"Yes";
}
1015: 堆排序算法
#include"iostream"
using namespace std;
int a[100];
int n;
void sort(int parent,int n)
{int child=parent*2;int top=a[parent];while(child<=n){if(child<n){if(a[child+1]<a[child]){child++;}}if(a[child]<top){a[parent]=a[child];parent=child;child=parent*2;}}a[parent]=top;
}
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=n/2;i>=1;i--){sort(i,n);}for(int i=1;i<=n;i++){cout<<a[i]<<" ";}
}
981: 统计利用二叉树存储的森林中树的棵数
#include"iostream"
#include"queue"
using namespace std;
typedef struct tree
{struct tree* left,*right;char data;
}tree;
tree* buynode(char ch)
{tree* root=(tree*)malloc(sizeof(tree));root->data=ch;root->left=root->right=NULL;return root;
}
tree* create(char s[],int* data)
{if(s[*data]=='#'||s[*data]=='\0'){(*data)++;return NULL;}tree* root=buynode(s[*data]);(*data)++;root->left=create(s,data);root->right=create(s,data);return root;
}
int forest(tree* root)
{int count=0;if(root==NULL) return 0;if(root->right==NULL) return 0;if(root->right!=NULL) count=1;return forest(root->right)+count;
}
int main()
{char s[100];while(scanf("%s",s)!=EOF){int data=0;tree* root=create(s,&data);cout<<forest(root)+1;}
}
982: 输出利用二叉树存储的普通树的度
#include"iostream"
#include"queue"
using namespace std;
typedef struct tree
{struct tree* left,*right;char data;
}tree;
tree* buynode(char ch)
{tree* root=(tree*)malloc(sizeof(tree));root->data=ch;root->left=root->right=NULL;return root;
}
tree* create(char s[],int*data)
{if(s[*data]=='#'||s[*data]=='\0'){(*data)++;return NULL;}tree* root=buynode(s[*data]);(*data)++;root->left=create(s,data);root->right=create(s,data);return root;
}
int lf(tree* root)
{int count=0;if(root==NULL) return NULL;if(root->right!=NULL) count=1;return lf(root->right)+count;}
int forest(tree* root)
{if(root==NULL) return 0;if(root->right!=NULL) return 0;tree* lrof=root->left;lf(lrof);return lf(lrof)+1;
}
int main()
{char s[100];while(scanf("%s",s)!=EOF){int data=0;tree* root=create(s,&data);if(forest(root)==0) cout<<"ERROR";else cout<<forest(root);}
}
984: 利用二叉树中序及先序遍历确定该二叉树的后序序列
#include"iostream"
#include"queue"
#include"string.h"
using namespace std;
typedef struct tree
{struct tree* left,*right;char data;
}tree;
tree* buynode(char ch)
{tree* root=(tree*)malloc(sizeof(tree));root->data=ch;root->left=root->right=NULL;return root;
}
tree* later(char* prder,char* order,int x)
{ if(x==0) return NULL;char *p=NULL;int t=0;for(p=order;p<order+x;p++){if(*p==prder[0]){break;}else{t++;}}tree* root=buynode(prder[0]);root->left=later(prder+1,order,t);root->right=later(prder+1+t,order+t+1,x-t-1);return root;
}
void print(tree* root)
{if(root!=NULL){print(root->left);print(root->right);cout<<root->data;}
}
int main()
{char order[100];char prder[100];cin>>order;cin>>prder;tree*root=later(prder,order,strlen(prder));print(root);
}
986: 哈夫曼译码
const int maxvalue=100;const int maxbit=100;const int maxn=100;#include "iostream"#include "stdio.h"#include "stdlib.h"using namespace std;struct haffnode{char ch;int weight;int flag;int parent;int leftchild;int rightchild;};struct code{int bit[maxn];int start;int weight;char ch;};void haffman(int weight[],char text[],int n,haffnode hafftree[]){int j,m1,m2,x1,x2,i;for(i=0;i< 2*n-1;i++){if(i < n){hafftree[i].weight=weight[i];hafftree[i].ch=text[i];}else{hafftree[i].weight=0;hafftree[i].ch='#';}hafftree[i].parent=0;hafftree[i].flag=0;hafftree[i].leftchild=-1;hafftree[i].rightchild=-1;}for(i=0;i< n-1;i++){m1=m2=maxvalue;x1=x2=0;for(j=0;j< n+i;j++){if(hafftree[j].weight< m1&&hafftree[j].flag==0){m2=m1;x2=x1;m1=hafftree[j].weight;x1=j;}else if(hafftree[j].weight< m2&&hafftree[j].flag==0){m2=hafftree[j].weight; x2=j;}}hafftree[x1].parent=n+i;hafftree[x2].parent=n+i;hafftree[x1].flag=1;hafftree[x2].flag=1;hafftree[n+i].weight=hafftree[x1].weight+hafftree[x2].weight;hafftree[n+i].leftchild=x1; hafftree[n+i].rightchild=x2;}}void haffmancode(haffnode hafftree[],int n,code haffcode[]){code cd; int i,j; int child,parent;for( i=0;i< n;i++){cd.start=n-1;cd.weight=hafftree[i].weight;cd.ch=hafftree[i].ch;child=i;parent=hafftree[child].parent;while(parent!=0){if(hafftree[parent].leftchild==child)cd.bit[cd.start]=0;else cd.bit[cd.start]=1;cd.start--;child=parent;parent=hafftree[child].parent;}for(j=cd.start+1;j< n;j++)haffcode[i].bit[j]=cd.bit[j];haffcode[i].start=cd.start;haffcode[i].weight=cd.weight;haffcode[i].ch=cd.ch;}}
#include"string.h"
void ccode(haffnode hafftree[],int n){ char str[100];cin>>str;int treenode=n*2-2;int len=strlen(str);for(int i=0;i<len;i++){if(str[i]=='0'){treenode=hafftree[treenode].leftchild;}if(str[i]=='1'){treenode=hafftree[treenode].rightchild;}if(hafftree[treenode].leftchild==-1||hafftree[treenode].rightchild==-1){cout<<hafftree[treenode].ch;treenode=n*2-2;}}
}int main( ){int n=8;int weight[]={5,29,7,8,14,23,3,11};char text[]={'a','b','c','d','e','f','g','h'};haffnode myhafftree[maxvalue];code myhaffcode[maxvalue];haffman(weight,text,n,myhafftree);haffmancode(myhafftree,n,myhaffcode);ccode(myhafftree,n);return 0;}
1105: 交换二叉树的孩子结点
#include"iostream"
using namespace std;
char s[100];
typedef struct tree
{struct tree* left,*right;char data;
}tree;
tree* buynode(char ch)
{tree* root=(tree*)malloc(sizeof(tree));root->data=ch;root->left=root->right=NULL;return root;
}
tree* create(char s[],int*data)
{if(s[*data]=='#'||s[*data]=='\0'){(*data)++;return NULL;}tree* root=buynode(s[*data]);(*data)++;root->left=create(s,data);root->right=create(s,data);return root;
}
void order(tree* root)
{if(root!=NULL){order(root->right);cout<<root->data;order(root->left);}
}
void prder(tree* root)
{if(root!=NULL){cout<<root->data;prder(root->right);prder(root->left);}
}
int main()
{cin>>s;int data=0;tree* root=create(s,&data);order(root);cout<<endl;prder(root);
}
1077: 平衡二叉树的判定
#include"iostream"
using namespace std;
char s[100];
#include"cstring"
typedef struct tree
{struct tree* left,*right;char data;
}tree;
tree* buynode(char ch)
{tree* root=(tree*)malloc(sizeof(tree));root->data=ch;root->left=root->right=NULL;return root;
}
tree* create(char s[],int* data)
{if(s[*data]=='#'||s[*data]=='\0'){(*data)++;return NULL;}tree* root=buynode(s[*data]);(*data)++;root->left=create(s,data);root->right=create(s,data);return root;
}
int depth(tree* root)
{if(root==NULL) return 0;int left=depth(root->left);int right=depth(root->right);return left>right?left+1:right+1;
}
bool balance(tree* root)
{if(root==NULL) return 1;if(root->left==NULL&&root->right==NULL) return 1;int left=depth(root->left);int right=depth(root->right);return abs(left-right)<=1&&balance(root->left)&&balance(root->right);}
int main()
{cin>>s;int data=0;tree* root=create(s,&data);if(balance(root)==1) cout<<"yes!";else cout<<"no!";
}
1014: 交换排序算法的设计与实现——冒泡排序
#include"iostream"
using namespace std;
int a[100];
int n;
int main()
{cin>>n;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<n;i++){for(int j=i;j<n-i-1;j++){if(a[j]>a[j+1]){int tmp=a[j+1];a[j+1]=a[j];a[j]=tmp;}}break;}for(int i=0;i<n;i++){cout<<a[i]<<" ";}
}
1053: 输出利用先序遍历创建的二叉树中的指定结点的度
#include"iostream"
using namespace std;
int a[100];
int n;
char s[100];
typedef struct tree
{struct tree* left,*right;char data;
}tree;
tree* buynode(char ch)
{tree* root=(tree*)malloc(sizeof(tree));root->data=ch;root->left=root->right=NULL;return root;
}
tree* create(char s[],int*data)
{if(s[*data]=='#'||s[*data]=='\0'){(*data)++;return NULL;}tree* root=buynode(s[*data]);(*data)++;root->left=create(s,data);root->right=create(s,data);return root;
}
int find(tree* root,char* key)
{if(root==NULL) return 0;if(root->data==*key){if(root->left!=NULL&&root->right!=NULL) return 2;else if(root->left!=NULL||root->right!=NULL) return 1;else return 0;}int left=find(root->left,key);int right=find(root->right,key);if(left>0||right>0)return 1;}
int main()
{cin>>s;char key;cin>>key;int data=0;tree* root=create(s,&data);cout<<find(root,&key);
}
1010: 折半查找的实现
#include"iostream"
using namespace std;
int a[100];
int main()
{int n=0;cin>>n;int data=0;for(int i=0;i<n;i++){cin>>a[i];}int key=0;cin>>key;int left=0;int right=n-1;int cnt=0;while(left<=right){int mid=(left+right)/2;if(a[mid]<key){left=mid+1;cnt++;}if(a[mid]>key){right=mid-1;cnt++;}if(a[mid]==key){cout<<mid<<endl<<cnt;return 0;}}cout<<"-1"<<endl<<cnt;
}
相关文章:
计算机大类专业数据结构下半期实验练习题
1068: 图的按录入顺序深度优先搜索 #include"iostream" using namespace std; #include"cstring" int visited[100]; char s[100]; int a[100][100]; int n; void dfs(int k,int n) {if(visited[k]0){visited[k]1;cout<<s[k];for(int i0;i<n;i){i…...
Android 关闭Activity切换过渡动画
Android 9.0以前关闭过渡动画效果只需要把开发者模式中过渡动画缩放设为0就可以。也就是把def_window_transition_scale改为0% frameworks/base/packages/SettingsProvider/res/values/defaults.xml <fraction name"def_window_transition_scale">100%<…...
iperf3的介绍与舒勇
在 CentOS 7 中使用 iperf3 进行网络性能测试,分为客户端和服务器两部分。以下是使用步骤: 1. 安装 iperf3 首先,你需要在 CentOS 7 上安装 iperf3。可以通过以下命令进行安装: sudo yum install epel-release sudo yum install…...
Python 包管理新选择:uv
在 Python 中,uv 是由 Astral 公司开发的 Rust 高性能包管理工具,旨在替代传统 pip 并提供更快的依赖管理、Python 版本控制等功能。 https://github.com/astral-sh/uv 在 github 上已有 53k star 一、uv 的核心优势 极速性能:比 pip 快 10-100 倍。多版本 Python 管理:支…...
从需求到用例的AI路径:准确率与挑战
用工作流生成测试用例和自动化测试脚本! 引言:用例的黄金起点 在软件工程中,“测试用例”是连接需求理解与质量保障之间的关键桥梁。一份高质量的测试用例,不仅是验证功能实现是否符合需求的工具,更是产品风险感知、用…...
JavaSE核心知识点02面向对象编程02-06(泛型)
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 JavaSE核心知识点02面向对象编程02-06&#…...
xml与注解的区别
功能xml配置注解定义bean bean标签 id属性 class属性 Component Controller Service Repository ComponentScan 设置依赖注入 setter注入(set方法) 构造器注入(构造方法) Autowired Qualifier Value 配置第三方bean bean标签 静…...
进阶 DFS 学习笔记
字数:12017字。 文章盗的图注明了出处,全部出自 y 总的算法提高课。 不知道为啥这个时候才开始学这个东西,好像是很多同龄人都已经学完了。 进阶 DFS 具体来说好几个东西,所以可能内容有一些些多。 默认 DFS 和 BFS 已经掌握了…...
计算机设计大赛山东省赛区软件开发赛道线上答辩复盘
流程回顾: 1.抽签顺序: 抽签顺序并不一定代表是最终顺序,要注意看通知不要遗漏。 2.答辩形式: 线上答辩,加入腾讯会议,进会议时自己的备注是作品编号,等轮到自己组答辩时主持人会把人拉进来…...
第7次课 栈A
课堂学习 栈(stack) 是一种遵循先入后出逻辑的线性数据结构。 我们可以将栈类比为桌面上的一摞盘子,如果想取出底部的盘子,则需要先将上面的盘子依次移走。我们将盘子替换为各种类型的元素(如整数、字符、对象等&…...
TXT编码转换工具iconv
iconv.exe是实现TXT编码转换的命令行工具,支持几百种编码格式的转换,利用它可以在自主开发程序上实现TXT文档编码的自动转换。 一、命令参数格式 Usage: iconv [-c] [-s] [-f fromcode] [-t tocode] [file ...] or: iconv -l 二、转换的示例 将UTF-8…...
基于Spring Boot + Vue的高校心理教育辅导系统
一、项目背景介绍 随着高校对学生心理健康教育的重视,传统的人工心理辅导与测评模式已经难以满足广大师生的个性化需求。为了提高心理服务的效率、便捷度和覆盖范围,本项目开发了一个高校心理教育辅导系统,集成心理评测、辅导预约、留言交流…...
关于甲骨文(oracle cloud)丢失MFA的解决方案
前两年,申请了一个招商的多币种信用卡,然后就从网上撸了一个oracle的免费1h1g的服务器。 用了一段时间,人家要启用MFA验证。 啥叫MFA验证,类似与短信验证吧,就是绑定一个手机,然后下载一个app,每…...
Linux系统管理与编程17:自动化部署ftp服务
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 #virtual用户管理:passerbyA、captain和admin三个虚拟用户 # passerbyA只能看,captain可看读写上传,但不能删除。admin全部权限 [rootshell shell]…...
C++STL——stack,queue
stack与queue 前言容器适配器deque 前言 本篇主要讲解stack与queue的底层,但并不会进行实现,stack的接口 queue的接口 ,关于stack与queue的接口在这里不做讲解,因为通过前面的对STL的学习,这些接口都是大同小异的。 …...
HC-SR04超声波测距传感器
1.基本信息 供电电压5v,测量范围2cm~400cm,测量精度正负3mm,超声波频率40khz 2.连接引脚: 3.工作原理 TRIG引脚发送至少10us的高电平信号,ECHO引脚负责接受信号; 接受方式:计算测量高电平持续的时间,从一…...
内存安全暗战:从 CVE-2025-21298 看 C 语言防御体系的范式革命
引言 2025 年 3 月,美国 CERT 发布的《年度漏洞报告》揭示了触目惊心的数据:C/C 相关漏洞占全年高危漏洞的 68%,其中内存安全问题贡献了 92% 的远程代码执行风险。当 CVE-2025-21298 漏洞在某工业控制软件中被利用,导致欧洲某核电…...
Linux笔记---System V共享内存
1. System V共享内存简介 System V共享内存是一种在Linux系统中用于进程间通信的机制。顾名思义,就是申请一段可供多个进程共享的内存,以用于进程间通信,相对于管道机制要更加直接。 1.1 原理 System V共享内存通过创建和使用一个特定的IP…...
MySQL 1366 - Incorrect string value:错误
MySQL 1366 - Incorrect string value:错误 错误如何发生发生原因: 解决方法第一种尝试第二种尝试 错误 如何发生 在给MySQL添加数据的时候发生了下面的错误 insert into sys_dept values(100, 0, 0, 若依科技, 0, 若依, 15888888888, ryqq.com, 0,…...
慈缘基金会“蝴蝶飞”助西藏女孩白玛卓嘎“折翼重生”
历经六个月、178天的艰难治疗,来自西藏拉萨的15岁女孩白玛卓嘎,终于在4月底挺直脊梁,带着自信的笑容踏上了回家的路。这场跨越雪域高原与首都北京的“生命蜕变之旅”,不仅改写了这位藏族少女的人生轨迹,更见证了公益力…...
【生存技能】ubuntu 24.04 如何pip install
目录 原因解决方案说明 在接手一个新项目需要安装python库时弹出了以下提示: 原因 这个报错是因为在ubuntu中尝试直接使用 pip 安装 Python 包到系统环境中,ubuntu 系统 出于稳定性考虑禁止了这种操作 这里的kali是因为这台机器的用户起名叫kali,我也不知道为什么…...
TDengine 在智能制造中的核心价值
简介 智能制造与数据库技术的深度融合,已成为现代工业技术进步的一个重要里程碑。随着信息技术的飞速发展,智能制造已经成为推动工业转型升级的关键动力。在这一进程中,数据库技术扮演着不可或缺的角色,它不仅承载着海量的生产数…...
代码随想录第41天:图论2(岛屿系列)
一、岛屿数量(Kamacoder 99) 深度优先搜索: # 定义四个方向:右、下、左、上,用于 DFS 中四向遍历 direction [[0, 1], [1, 0], [0, -1], [-1, 0]]def dfs(grid, visited, x, y):"""对一块陆地进行深度…...
C语言复习--柔性数组
柔性数组是C99中提出的一个概念.结构体中的最后⼀个元素允许是未知大小的数组,这就叫做柔性数组成员。 格式大概如下 struct S { int a; char b; int arr[];//柔性数组 }; 也可以写成 struct S { int a; char b; int arr[0];//柔性数组 }; …...
《Python星球日记》 第55天:迁移学习与预训练模型
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、迁移学习基础1. 什么是迁移学习?2. 迁移学习的优势3. 迁移学习的…...
Python项目75:PyInstaller+Tkinter+subprocess打包工具1.0(安排 !!)
这个打包工具包含以下功能: 1.主要功能:选择Python脚本文件,设置打包选项(单文件打包、无控制台窗口),自定义程序图标,指定输出目录,实时显示打包日志。 2.自适应布局改进ÿ…...
互联网大厂Java面试实录:从基础到微服务的深度考察
互联网大厂Java面试实录:从基础到微服务的深度考察 面试场景 面试官:风清扬(严肃且技术深厚) 求职者:令狐冲(技术扎实但偶尔含糊) 第一轮:Java基础与框架 风清扬:令狐…...
学习黑客5 分钟深入浅出理解Linux进程管理
5 分钟深入浅出理解Linux进程管理 🖥️ 大家好!今天我们将探索Linux系统中的进程管理——这是理解系统运行机制和进行安全分析的基础知识。在TryHackMe平台上进行网络安全学习时,了解进程如何工作以及如何监控和控制它们,对于识别…...
Kubernetes应用发布方式完整流程指南
Kubernetes(K8s)作为容器编排领域的核心工具,其应用发布流程体现了自动化、弹性和可观测性的优势。本文将通过一个Tomcat应用的示例,详细讲解从配置编写到高级发布的完整流程,帮助开发者掌握Kubernetes应用部署的核心步…...
JVM——即时编译器的中间表达形式
中间表达形式(IR):编译器的核心抽象层 1. IR的本质与作用 在编译原理的体系中,中间表达形式(Intermediate Representation, IR)是连接编译器前端与后端的桥梁。前端负责将源代码转换为IR,而后…...
Js 判断浏览器cookie 是否启用
验证时 google浏览器 135.0.7049.117 不生效 cookie.html <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><title>Cookie 检测</title> </head> <body><h1>检测是否启用 Cookie<…...
数字相机的快门结构
数字相机(DC/DSLR等)的快门结构和传统相机有所不同,除了机械快门以外,还存在电子快门,实际上是二者的混合体。我写这篇文章大概介绍一下数字相机的快门结构,希望能抛砖引玉。 要讨论数字相机的快门结构,首先先要了解一下数字相机的结构分类,根据成像原理不同,数字相机大…...
LeetCode --- 448 周赛
题目列表 3536. 两个数字的最大乘积 3537. 填充特殊网格 3538. 合并得到最小旅行时间 3539. 魔法序列的数组乘积之和 一、两个数字的最大乘积 由于数据都是正数,所以乘积最大的两个数,本质就是找数组中最大的两个数即可,可以排序后直接找到…...
添加物体.
在cesium中我们可以添加物体进入地图.我们以广州塔为例 //生成广州塔的位置var position2 Cesium.Cartesian3.fromDegrees(113.3191,23.109,100)viewer.camera.setView({//指定相机位置destination: position2, 运行后如图 我们使用cesium官网提供的代码为广州塔在地图上标点…...
ABB电机控制和保护单元与Profibus DP主站转Modbus TCP网关快速通讯案例
ABB电机控制和保护单元与Profibus DP主站转Modbus TCP网关快速通讯案例 在现代工业自动化系统中,设备之间的互联互通至关重要。Profibus DP和Modbus TCP是两种常见的通信协议,分别应用于不同的场景。为了实现这两种协议的相互转换,Profibus …...
Yocto中`${S}`和`${WORKDIR}`的联系与区别
在Yocto项目中,${S}和${WORKDIR}是构建过程中两个核心路径变量,它们的关系及用途如下: 定义与层级关系${WORKDIR}(工作目录) 是Recipe所有任务执行的基础目录,路径结构为: build/tmp/work/<arch>/<recipe-name>/<version>/。 该目录包含源码解压后的所…...
CDGP历次主观题真题回忆
(一)【论述】 1如何设计企业的数据安全体系?活动+方法+DSMM 2如何管理公司混乱的数据质量?活动+遵循原则+建立质量维度+质量改进生命周期+高阶指标。...
Java学习手册:Spring Cloud 组件详解
一、服务发现组件 - Eureka 核心概念 :Eureka 是一个服务发现组件,包含 Eureka Server 和 Eureka Client 两部分。Eureka Server 作为服务注册中心,负责维护服务实例的注册信息;Eureka Client 则是集成在应用中的客户端࿰…...
【大模型】使用 LLaMA-Factory 进行大模型微调:从入门到精通
使用 LLaMA-Factory 进行模型微调:从入门到精通 一、环境搭建:奠定微调基础(一)安装依赖工具(二)创建 conda 环境(三)克隆仓库并安装依赖 二、数据准备:微调的基石&#…...
sensitive-word-admin v2.0.0 全新 ui 版本发布!vue+前后端分离
前言 sensitive-word-admin 最初的定位是让大家知道如何使用 sensitive-word,所以开始想做个简单的例子。 不过秉持着把一个工具做好的原则,也收到很多小伙伴的建议。 v2.0.0 在 ruoyi-vue(也非常感谢若依作者多年来的无私奉献)…...
HTML属性
HTML(HyperText Markup Language)是网页开发的基石,而属性(Attribute)则是HTML元素的重要组成部分。它们为标签提供附加信息,控制元素的行为、样式或功能。本文将从基础到进阶,全面解析HTML属性…...
计算机网络 4-1 网络层(网络层的功能)
【考纲内容】 (一)网络层的功能 异构网络互连;路由与转发;SDN基本概念;拥塞控制 (二)路由算法 静态路由与动态路由;距离-向量路由算法;链路状态路由算法;层…...
《算法导论(第4版)》阅读笔记:p17-p27
《算法导论(第4版)》学习第 10 天,p17-p27 总结,总计 11 页。 一、技术总结 1. insertion sort (1)keys The numbers to be sorted are also known as the keys(要排序的数称为key)。 第 n 次看插入排序,这次有两个地方感触比较深&#…...
C++中线程安全的对多个锁同时加锁
C中线程安全的对多个锁同时加锁 C中线程安全的对两个锁同时加锁 C中线程安全的对两个锁同时加锁 参考文档:https://llfc.club/articlepage?id2UVOC0CihIdfguQFmv220vs5hAG 如果我们现在有一个需要互斥访问的变量 big_object,它的定义如下: …...
子串简写(JAVA)一维前缀和, 蓝桥杯
这个题用前缀和,开两个数组,一个存前n个字符数据的c1的数字个数,另一个前n个字符c2的数字个数,然后遍历一次加起来,有一个测试点没过去,把那个存最后数的换成long,应该是这题数据范围给的不对&a…...
数据库故障排查全攻略:从实战案例到体系化解决方案
一、引言:数据库故障为何是技术人必须攻克的 "心腹大患" 在数字化时代,数据库作为企业核心数据资产的载体,其稳定性直接决定业务连续性。据 Gartner 统计,企业每小时数据库 downtime 平均损失高达 56 万美元࿰…...
vllm笔记
目录 vllm简介vllm解决了哪些问题?1. **瓶颈:KV 缓存内存管理低效**2. **瓶颈:并行采样和束搜索中的内存冗余**3. **瓶颈:批处理请求中的内存碎片化** 快速开始安装vllm开始使用离线推理启动 vLLM 服务器 支持的模型文本语言模型生…...
“AI+城市治理”智能化解决方案
目录 一、建设背景 二、需求分析 三、系统设计 四、系统功能 五、应用场景 六、方案优势 七、客户价值 八、典型案例 一、建设背景 当前我国城市化率已突破65%,传统治理模式面临前所未有的挑战。一方面,城市规模扩大带来治理复杂度呈指数级增长,全国城市管理案件年…...
《医疗AI的透明革命:破解黑箱困境与算法偏见的治理之路》
医疗AI透明度困境 黑箱问题对医生和患者信任的影响:在医疗领域,AI模型往往表现为难以理解的“黑箱”,这会直接影响医生和患者对其诊断建议的信任度 。医生如果无法理解AI给出诊断的依据,就难以判断模型是否存在偏见或错误&#x…...
【论文阅读】Efficient and secure federated learning against backdoor attacks
Efficient and secure federated learning against backdoor attacks -- 高效且安全的可抵御后门攻击的联邦学习 论文来源问题背景TLDR系统及威胁模型实体威胁模型 方法展开服务器初始化本地更新本地压缩高斯噪声与自适应扰动聚合与解压缩总体算法 总结优点缺点 论文来源 名称…...