北京化工大学数据结构2022/11/17作业 题解

news2025/8/10 9:18:37

(7条消息) 食用前须知(阅读并同意后在食用其他部分)_lxrrrrrrrr的博客-CSDN博客

看完进来哈

目录

问题 A: 邻接矩阵存储的图,节点的出度和入度计算(附加代码模式)

问题 B: 算法7-12:有向无环图的拓扑排序

问题 C: 有向图是否存在环?

问题 D: 是否为有效的拓扑序列

问题 E: 案例6-2.6:最短工期

---------------------------------------概念-----------------------------------------

最早发生时间:

最迟发生时间:

关键路径:

--------------------------------------------------------------------------------------

问题 F: 图-节点的最早发生时间

问题 G: 图-节点的最迟发生时间

问题 H: 图-边的最早发生时间

问题 I: 图-边的最迟发生时间

问题 J: 图-图的关键路径


问题 A: 邻接矩阵存储的图,节点的出度和入度计算(附加代码模式)

模拟即可

#include <bits/stdc++.h>
using namespace std;
#define MAX_SIZE 200
struct Graph{
    int nodeNumber;
    int adjMatrix[MAX_SIZE][MAX_SIZE];
};
void CalculateDegree(const Graph& g,int inDegree[],int outDegree[]){
    int n=g.nodeNumber;
    for(int i=0;i<n;i++){
        for( int j=0;j<n;j++){
            if(g.adjMatrix[i][j]==0){
                continue;
            }
            inDegree[j]+=1;
            outDegree[i]+=1;
        }
    }
}

问题 B: 算法7-12:有向无环图的拓扑排序

拓扑排序板子

从每个入度为0的点开始宽搜即可

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
int G[1000][1000];
int n;
int du[1000];
vector<int> ans;
bool tpst() {
    int num=0;
    stack<int> q;
    fer(i,0,n-1){
        if(du[i]==0){
            q.push(i);
        }
    }
    while(q.size()) {
        int u=q.top();
        q.pop();
        ans.pb(u);
        num++;
        fer(v,0,n-1){
            if(G[u][v]) {
                du[v]--;
                if(du[v]==0)
                    q.push(v);  
            } 
        }
    }
    if(num==n){
        return true;
    }
    else{
        return false;
    }
}
signed main()
{
    cin>>n;
    fer(i,0,n-1){
        fer(j,0,n-1){
            cin>>G[i][j];
            if(G[i][j]){
                du[j]++;
            }
        }
    }
    if(tpst()) {
        for(auto t:ans){
            cout<<t<<" ";
        }
        cout<<'\n';
    }
    else{
        cout <<"ERROR\n";
    } 
} 

问题 C: 有向图是否存在环?

判环的话

并查集好写一点

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
int p[N];
int find(int x){
    if(p[x]!=x)  p[x]=find(p[x]);
    return p[x];
}
 
signed main(){
    int n,m;
    while(cin>>n>>m){
        if(!n && !m) break;
        fer(i,1,n) p[i]=i;
        bool fl=false;
        fer(i,1,m){
            int a,b;
            cin>>a>>b;
            if(find(a)!=find(b)){
                p[find(a)]=find(b);
            }
            else{
                fl=1;
                break;
            }
        }
        if(fl){
            cout<<"YES\n";
        }
        else{
            cout<<"NO\n";
        }
    }
}

问题 D: 是否为有效的拓扑序列

计算一下度数即可

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
vector<int> v[N];
int inv[N];
int now[N];
int n,m;
int inx[N];
bool check(){
    fer(i,0,n) now[i]=inv[i];
    for(int i=0;i<n;i++){
        cin>>inx[i];
    }
    for(int i=0;i<n;i++){
        if(now[inx[i]]!=0){
            return false;
        }
        for(int j=0;j<v[inx[i]].size();j++){
            now[v[inx[i]][j]]--;
        }
    }
    return true;
}
signed main(){
    cin>>n>>m;
    fer(i,1,m){
        int a,b;
        cin>>a>>b;
        v[a].pb(b);
        inv[b]++;
    }
    int k;
    cin>>k;
    fer(i,1,k){
        if(check()){
            cout<<"YES"<<endl;
        }
        else cout<<"NO"<<endl;
    }
      
}

问题 E: 案例6-2.6:最短工期

拓扑排序不那么板子的板子题

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
int tmp[N];
int h[N],e[N],ne[N],w[N],idx;
int d[N],ans[N];
queue<int> q;
void add(int a,int b,int f){
    e[idx]=b,w[idx]=f,ne[idx]=h[a],h[a]=idx++;
}
int n,m;
void solve(){
    int ans=0;
    while(!q.empty()){
        int t=q.front();
        q.pop();
        for(int i=h[t];i!=-1;i=ne[i]){
            d[e[i]]--;
            if(d[e[i]]==0) q.push(e[i]);
            tmp[e[i]]=max(tmp[e[i]],w[i]+tmp[t]);
            ans=max(ans,tmp[e[i]]);
        }
    }
    fer(i,0,n-1){
        if(d[i]!=0){
            cout<<"Impossible\n";
            return;
        }
    }
    cout<<ans<<'\n';
}
signed main(){
    memset(h,-1,sizeof h);
    cin>>n>>m;
    fer(i,1,m){
        int a,b,c;
        cin>>a>>b>>c;
        add(a,b,c);
        d[b]++;
    }
    fer(i,0,n-1){
        if(d[i]==0){
            q.push(i);
            tmp[i]=0;
        }
    }
    solve();
}

---------------------------------------概念-----------------------------------------

作业上的概念模糊不清,这里稍作解释,是离散数学中的概念

我们以这张图为例

最早发生时间:

从前往后,前驱结点到当前结点所需时间,取最大值。

如上图中的节点4有两个前驱结点(节点2和3),节点2到节点4的最早发生时间是a1+a3也就是8,节点3到节点4的最早发生时间是a2+a4也就是12,因为12>8,所以节点4的最早发生时间是12.

最迟发生时间:

从后往前,后继结点的最迟发生时间-边权值,取最小值。

也就是求一次最早发生时间,再从出度为0的点反向更新回来求出每个点的最迟时间

关键路径:

最早发生时间和最迟发生时间相同的结点即为关键路径上的节点。

 也就是两个都要求一遍呗

而边的最早最迟发生时间大家看作业上的图就知道了,就是看对应的点的最早最迟发生时间

所以我们可以先求点的然后在遍历一遍求出边的最早最迟发生时间

--------------------------------------------------------------------------------------

下列代码我没有用拓扑排序写

而是直接宽搜的,然后松弛

拓扑排序本质就是bfs呗

因为后续涉及到对边的操作,所以我用了链式前向星存图

不懂可以csdn一下,很简单的

问题 F: 图-节点的最早发生时间

边bfs边更新每个点的答案

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
int h[N],w[N],e[N],ne[N],idx;
void add(int a, int b, int c)
{
    e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++ ;
}
int dist[N];
int n,m;
void bfs(){
    memset(dist,0,sizeof dist);
    dist[1]=0;
    queue<int> q;
    q.push(1);
    while(q.size()){
        auto tp=q.front();
        q.pop();
        for(int i=h[tp];i!=-1;i=ne[i]){
            int j=e[i];
            if(w[i]+dist[tp]>dist[j]){
                dist[j]=dist[tp]+w[i];
                q.push(j);
            }
        }
    }
}
signed main(){
    memset(h,-1,sizeof h);
    cin>>n>>m;
    fer(i,1,m){
        int a,b,w;
        cin>>a>>b>>w;
        add(a+1,b+1,w);
    }
    bfs();
    fer(i,1,n){
        cout<<dist[i]<<'\n';
    }
}

问题 G: 图-节点的最迟发生时间

我们需要建两张图,一张正向图一张反向图

从第一张图bfs出去求出最早时间,然后在第二张图反向bfs一遍

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
int h[N],w[N],e[N],ne[N],idx;
int h2[N],w2[N],e2[N],ne2[N],idx2;
void add1(int a, int b, int c)
{
    e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++ ;
}
void add2(int a, int b, int c)
{
    e2[idx2]=b,w2[idx2]=c,ne2[idx2]=h2[a],h2[a]=idx2++ ;
}
int dist[N];
int dist2[N];
int n,m;
void bfs(){
    memset(dist,0,sizeof dist);
    dist[1]=0;
    queue<int> q;
    q.push(1);
    while(q.size()){
        auto tp=q.front();
        q.pop();
        for(int i=h[tp];i!=-1;i=ne[i]){
            int j=e[i];
            if(w[i]+dist[tp]>dist[j]){
                dist[j]=dist[tp]+w[i];
                q.push(j);
            }
        }
    }
    memset(dist2,0x3f,sizeof dist2);
    queue<int> q2;
    fer(i,1,n){
        if(h[i]==-1){
            dist2[i]=dist[i];
            q2.push(i);
        }
    }
 
    while(q2.size()){
        auto tp=q2.front();
        q2.pop();
        for(int i=h2[tp];i!=-1;i=ne2[i]){
            int j=e2[i];
            if(dist2[tp]-w2[i]<dist2[j]){
                dist2[j]=dist2[tp]-w2[i];
                q2.push(j);
            }
        }
    }
}
int res[N];
signed main(){
    memset(h,-1,sizeof h);
    memset(h2,-1,sizeof h2);
    cin>>n>>m;
    fer(i,1,m){
        int a,b,w;
        cin>>a>>b>>w;
        add1(a+1,b+1,w);
        add2(b+1,a+1,w);
    }
    bfs();
    fer(i,1,n){
        cout<<dist2[i]<<"\n";
    }
}

问题 H: 图-边的最早发生时间

和点的最早发生时间一样

这条边是那个点引出来的答案就和这个点的最早发生时间一样

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
int h[N],w[N],e[N],ne[N],idx;
int res[N];
void add(int a, int b, int c)
{
    e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++ ;
}
int dist[N];
int n,m;
void bfs(){
    memset(dist,0,sizeof dist);
    dist[1]=0;
    queue<int> q;
    q.push(1);
    while(q.size()){
        auto tp=q.front();
        q.pop();
        for(int i=h[tp];i!=-1;i=ne[i]){
            int j=e[i];
            if(w[i]+dist[tp]>dist[j]){
                dist[j]=dist[tp]+w[i];
                q.push(j);
            }
        }
    }
}
signed main(){
    memset(h,-1,sizeof h);
    cin>>n>>m;
    fer(i,1,m){
        int a,b,w;
        cin>>a>>b>>w;
        add(a+1,b+1,w);
    }
    bfs();
    fer(node,1,n){
        for(int i=h[node];i!=-1;i=ne[i]){
            res[i]=dist[node];
        }
    }
    fer(i,0,m-1){
        cout<<res[i]<<'\n';
    }
}

问题 I: 图-边的最迟发生时间

和点的最迟发生时间一样

这条边指向那个点的答案就是这个点的最迟发生时间减去权值

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
int h[N],w[N],e[N],ne[N],idx;
int h2[N],w2[N],e2[N],ne2[N],idx2;
void add1(int a, int b, int c)
{
    e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++ ;
}
void add2(int a, int b, int c)
{
    e2[idx2]=b,w2[idx2]=c,ne2[idx2]=h2[a],h2[a]=idx2++ ;
}
int dist[N];
int dist2[N];
int n,m;
void bfs(){
    memset(dist,0,sizeof dist);
    dist[1]=0;
    queue<int> q;
    q.push(1);
    while(q.size()){
        auto tp=q.front();
        q.pop();
        for(int i=h[tp];i!=-1;i=ne[i]){
            int j=e[i];
            if(w[i]+dist[tp]>dist[j]){
                dist[j]=dist[tp]+w[i];
                q.push(j);
            }
        }
    }
    memset(dist2,0x3f,sizeof dist2);
    queue<int> q2;
    fer(i,1,n){
        if(h[i]==-1){
            dist2[i]=dist[i];
            q2.push(i);
        }
    }
 
    while(q2.size()){
        auto tp=q2.front();
        q2.pop();
        for(int i=h2[tp];i!=-1;i=ne2[i]){
            int j=e2[i];
            if(dist2[tp]-w2[i]<dist2[j]){
                dist2[j]=dist2[tp]-w2[i];
                q2.push(j);
            }
        }
    }
}
int res[N];
signed main(){
    memset(h,-1,sizeof h);
    memset(h2,-1,sizeof h2);
    cin>>n>>m;
    fer(i,1,m){
        int a,b,w;
        cin>>a>>b>>w;
        add1(a+1,b+1,w);
        add2(b+1,a+1,w);
    }
    bfs();
    fer(node,1,n){
        for(int i=h[node];i!=-1;i=ne[i]){
            int j=e[i];
            res[i]=dist2[j]-w[i];
        }
    }
    fer(i,0,m-1){
        cout<<res[i]<<'\n';
    }
}

问题 J: 图-图的关键路径

两个都求一边

然后看相等

#include <bits/stdc++.h>
#define int long long
#define pb push_back
#define fer(i,a,b) for(int i=a;i<=b;++i)
#define der(i,a,b) for(int i=a;i>=b;--i)
#define all(x) (x).begin(),(x).end()
#define pll pair<int,int>
#define et  cout<<'\n'
#define xx first
#define yy second
using namespace std;
const int N=1e6+10;
int h[N],w[N],e[N],ne[N],idx;
int h2[N],w2[N],e2[N],ne2[N],idx2;
void add1(int a, int b, int c)
{
    e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++ ;
}
void add2(int a, int b, int c)
{
    e2[idx2]=b,w2[idx2]=c,ne2[idx2]=h2[a],h2[a]=idx2++ ;
}
int dist[N];
int dist2[N];
int n,m;
void bfs(){
    memset(dist,0,sizeof dist);
    dist[1]=0;
    queue<int> q;
    q.push(1);
    while(q.size()){
        auto tp=q.front();
        q.pop();
        for(int i=h[tp];i!=-1;i=ne[i]){
            int j=e[i];
            if(w[i]+dist[tp]>dist[j]){
                dist[j]=dist[tp]+w[i];
                q.push(j);
            }
        }
    }
    memset(dist2,0x3f,sizeof dist2);
    queue<int> q2;
    fer(i,1,n){
        if(h[i]==-1){
            dist2[i]=dist[i];
            q2.push(i);
        }
    }
  
    while(q2.size()){
        auto tp=q2.front();
        q2.pop();
        for(int i=h2[tp];i!=-1;i=ne2[i]){
            int j=e2[i];
            if(dist2[tp]-w2[i]<dist2[j]){
                dist2[j]=dist2[tp]-w2[i];
                q2.push(j);
            }
        }
    }
}
int res[N];
int res2[N];
vector<pll> edge;
signed main(){
    memset(h,-1,sizeof h);
    memset(h2,-1,sizeof h2);
    cin>>n>>m;
    fer(i,1,m){
        int a,b,w;
        cin>>a>>b>>w;
        edge.push_back({a,b});
        add1(a+1,b+1,w);
        add2(b+1,a+1,w);
    }
    bfs();
    fer(node,1,n){
        for(int i=h[node];i!=-1;i=ne[i]){
            res[i]=dist[node];
        }
    }
    fer(node,1,n){
        for(int i=h[node];i!=-1;i=ne[i]){
            int j=e[i];
            res2[i]=dist2[j]-w[i];
        }
    }
    fer(i,0,m-1){
        if(res[i]==res2[i]){
            cout<<edge[i].first<<"-->"<<edge[i].second<<":"<<res[i]<<'\n';
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

剪枝算法:通过网络瘦身学习高效卷积网络

摘要 原文链接&#xff1a;https://arxiv.org/abs/1708.06519 深度卷积神经网络(CNNs)在现实世界中的应用很大程度上受到其高计算成本的阻碍。在本文中&#xff0c;我们提出了一种新的cnn学习方案&#xff0c;以同时减小模型的尺寸;2)减少运行时内存占用;3)在不影响精度的前…

[附源码]java毕业设计企业职工福利发放管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

WPF TreeView数据回填

这一期简单的说一下这个TreeView的数据回填&#xff0c; 上图是查询类型数据 上图是服务端的数据传递&#xff0c; 从数据库对应的查询出的数据传到服务端然后再传到客户端 上图就是在客户端后台启用刷新中的代码&#xff0c; DefaultView 获取自定义的视图 ItemsSource 获取…

如何在两个相关泛型类之间创建类似子类型的关系

本文正在参加「金石计划 . 瓜分6万现金大奖」 哈喽大家好&#xff0c;我是阿Q&#xff01; 事情是这个样子的...... 对话中的截图如下&#xff1a; 看了阿Q的解释&#xff0c;你是否也和“马小跳”一样存在疑问呢&#xff1f;请往&#x1f447;看 我们都知道在java中&#x…

领英高效开发客户方法(建议收藏)

领英高效开发客户 有效使用linkedIn领英&#xff0c;充分利用其人脉来为我们外贸人开发客户服务&#xff0c;我们也能获得外贸业-务更多更好机遇&#xff0c;扩大自己的外贸人脉圈。 在这里和大家分享一下&#xff0c;如何利用好领英linkedIn&#xff0c;轻松免-费地开发国外客…

深度学习入门(四十二)计算机视觉——目标检测和边界框

深度学习入门&#xff08;四十二&#xff09;计算机视觉——目标检测和边界框前言计算机视觉——目标检测和边界框课件图片分类和目标检测边缘框目标检测数据集总结教材1 边界框2 小结前言 核心内容来自博客链接1博客连接2希望大家多多支持作者 本文记录用&#xff0c;防止遗忘…

m基于MATLAB数字调制解调仿真,包括ASK,FSK,DPSK及MDPSK,对比误码率

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 振幅键控&#xff08;也称幅移键控&#xff09;&#xff0c;记做ASK,或称其为开关键控&#xff08;通断键控&#xff09;&#xff0c;记做OOK 。二进制数字振幅键控通常记做2ASK。 对于振…

Spring Cloud(十一):Spring Cloud Security Oauth2

OAuth2 登录历程 basic 用户名&#xff1a;密码session cookietokenjwt 登录流程分析&#xff1a; https://www.processon.com/view/link/60a32e7a079129157118740f 微信开发平台文档&#xff1a; https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Logi…

(2)paddle---简单线性回归和波士顿房价预测

1、参考地址 &#xff08;1&#xff09;blibli网站地址 251-03_PaddlePaddle求解线性模型_dec_哔哩哔哩_bilibili &#xff08;2&#xff09;波士顿数据集介绍参考了 机器学习:波士顿房价数据集_mjiansun的博客-CSDN博客 2、简单线性回归 &#xff08;1&#xff09;测试一…

上海亚商投顾:沪指失守3100点 教育板块逆势大涨

上海亚商投顾前言&#xff1a;无惧大盘大跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪大小指数今日走势分化&#xff0c;沪指震荡调整&#xff0c;尾盘再度失守3100点&#xff0c;创业板指盘中涨超1%&am…

定制activemq_RPM包,注册系统服务并开机自启

rpmbuild命令用于创建软件的二进制包和源代码包。 1.准备环境 系统&#xff1a;Centos7 安装所需编译环境&#xff1a; # yum install epel-release -y # yum install rpmdevtools rpm-build gcc make tcl jemalloc -y 2.提前编译安装redis&#xff0c;此处以activemq-5…

nodejs学习week01

说明&#xff1a;学习nodejs之气那应该掌握html&#xff0c;css&#xff0c;JavaScript等前端基础技术 目录 一、什么是nodejs 二、nodejs的内部模块 1.fs文件系统模块 2.path路径模块 3.http服务器模块 三、module.exports对象 四、时间格式化 1.使用JavaScript的方…

Python自动化运维之一(Python入门)

Python简介 python是吉多范罗苏姆发明的一种面向对象的脚本语言&#xff0c;可能有些人不知道面向对象和脚本具体是什么意思&#xff0c;但是对于一个初学者来说&#xff0c;现在并不需要明白。大家都知道&#xff0c;当下全栈工程师的概念很火&#xff0c;而Python是一种全栈的…

docker-compose模板文件、命令的使用

docker-compose官网 一、docker-compose的命令 1、up(启动) 格式为 docker-compose up [options] [SERVICE…] 该命令十分强大&#xff0c;它将尝试自动完成包括构建镜像&#xff0c;&#xff08;重新&#xff09;创建服务&#xff0c;启动服务&#xff0c;并关联服务相关容器…

FAQ是什么?该如何编辑FAQ?

“FAQ”这个关键词可能很多人都见过&#xff0c;但是如果不是行业内的人&#xff0c;大概还不知道它的含义&#xff0c;所以本文将介绍 FAQ和 FAQ文档的编写。 “FAQ”是中文意思&#xff0c;意思是“常见问题解答”或“帮助中心”。研究显示&#xff0c;客户服务支持每天要花…

第四章. Pandas进阶—数据分组统计

第四章. Pandas进阶 4.3 数据分组统计 1.分组统计函数(groupby函数) 1).功能&#xff1a; 根据给定的条件将数据拆分成组每个组否可以独立应用函数&#xff08;sum&#xff0c;mean&#xff0c;min&#xff09;将结果合并到一个数据结构中 2).语法&#xff1a; DataFrame.gro…

5G无线技术基础自学系列 | 物理上行共享信道

素材来源&#xff1a;《5G无线网络优化实践》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 NR PUSCH支持两种波形&#xff08;参阅TS…

Python入门自学进阶-Web框架——26、DjangoAdmin项目应用-数据记录操作

对于每个表显示的数据&#xff0c;点击其中一条&#xff0c;进入这条数据的修改页面&#xff0c;显示此条数据的具体内容&#xff0c;并提供修改、删除等功能。主要是ModelForm的应用。 一、记录数据修改 首先是路由项的添加&#xff0c;点击一条记录后&#xff0c;进入相应的…

MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

什么是MaxEnt模型&#xff1f; MaxEnt模型的原理是什么&#xff1f;有哪些用途&#xff1f; MaxEnt运行需要哪些输入文件&#xff1f;注意那些事项&#xff1f; 融合R语言的MaxEnt模型的优势&#xff1f; 常用数据检索与R语言自动化下载及可视化方法 常用数据下载网站&…

第一章《初学者问题大集合》第7节:编写第一个Java程序

下载并安装好IDEA之后&#xff0c;就可以编写Java程序啦&#xff01;前文曾经讲过&#xff0c;Java程序最初的存在形式是Java源文件&#xff0c;经过编译之后又会产生字节码文件。当今时代&#xff0c;软件项目的规模越来越大&#xff0c;因此软件项目中会有多个Java源文件和字…