2023年408数据结构真题(二刷)

四季读书网 3 0
2023年408数据结构真题(二刷)
2023年408数据结构真题(二刷) 第1张
2023年408数据结构真题(二刷) 第2张
//2023年

//题目里说的K点指的是入度大于出度的顶点
//我原本想用两个数组,一个数组统计全部顶点的入度,一个数组统计全部顶点的出度,
//但是,我想了一下,我完全可以只用两个临时变量来分别记录单个也就是当前顶点的入度和出度
//想想一下邻接矩阵的逻辑结构,先便利i这一行,在去找i这一列,就能统计i的入度和出度了
//之后在下次最外层的for循环也就是要看i+1这个顶点的时候直接在初始化in_degree,out_degree这俩变量即可

int print_K_ver(mgraph g){
    int count = 0;
for (int i = 0; i < g.vernum; ++i) {
        int in_degree = 0,out_degree = 0;
for (int j = 0; j < g.vernum; ++j) {
if (g.edge[i][j] != 0)
                out_degree++;  //从i到j是i的出度
if (g.edge[j][i] != 0)
                in_degree++;   //从j到i是i的入度
        }
if (out_degree > in_degree){
            count++;
printf("%d",i);  //输出题目要求的这个顶点,我这里输出对应的数组下标吧
        }
    }
return count;
}
其实这道题不要求时空复杂度,我在看了标准答案发现他的时间复杂度也是n平方,跟我的一样,最初的时候我想用两个辅助数组来,一下子就想到了,但是觉得空间复杂度太大了,而且题目还没说这个图G的顶点个数,就不太好弄,所以还是用俩临时变量吧,难度不高,好想

抱歉,评论功能暂时关闭!