【密码提取源码】【wmk 指标源码】【gui界面源码】dfs源码

时间:2024-11-23 13:09:41 编辑:rocketmq源码编译 来源:抖客侠拓客系统源码

1.dfsԴ??
2.一个C语言题目?
3.c++队列的问题,学习图时在成员函数使用了pop(),但是无效,请问是密码提取源码什么原因?

dfs源码

dfsԴ??

       React设计原理详解:深入理解React 源码(一)

       React的核心工具之一是jsx,它是一种语法扩展,开发者编写的代码会被Babel编译成ReactElement,进一步转化为FiberNode,这是一种虚拟DOM在React中的实现,它能表达组件状态和节点关系,同时具备可扩展性。

       FiberNode的wmk 指标源码工作方式采用深度优先遍历(DFS)策略,递归地处理ReactElement。在渲染过程中,递归分为beginWork(开始工作)和completeWork(完成工作)两个阶段。在ReactDOM的createRoot和render方法中,scheduleUpdateOnFiber和processUpdateQueue负责更新和创建子fiber节点。gui界面源码

       在commit阶段,关键步骤包括执行root上的mutation,以及对Host类型的FiberNode构建离屏DOM树。ChildReconciler的两个关键点是子ReactElement到子fiber的创建方式和flag标识的设置。最后,任务源码出售学习者需要注意的是,通过阅读本文,可以关注以下三点:

       理解jsx与FiberNode的关系

       掌握React的递归渲染过程和commit阶段的子阶段

       反思和分享你的学习体验,一起探讨React的深入知识

       如果你觉得这篇文章有价值,别忘了在留言区分享你的刮开溯源码见解,或者将其推荐给你的朋友。让我们一起深化对React 源码的理解。

一个C语言题目?

       递归,传入参数为未答题同学数k和当前总得分sum

       每次一位同学答题后k--,然后有四种选择使总分发生变化,即沿四个分支继续递归

       递归终止条件为k==0,此时再判断sum是否为0即可

       C语言代码和运行结果如下:

       输出为,数学验证一下,总分为0只可能为:4个同学都选甲题,2对2错;

       4个同学都选乙题,2对2错;2个同学选甲题,1对1错,另2个同学选乙题,1对1错

       因此答案为:A(4,2)+A(4,2)+A(4,2)=,结果正确,望采纳~

       附源码:

#include <stdio.h>

int ans = 0;

void dfs(int k, int sum) {

    if (k == 0) { // 所有人都答题完毕

        if (sum == 0)

            ans++;

        return;

    }

    dfs(k - 1, sum + ); // 选择甲题且答对

    dfs(k - 1, sum - ); // 选择甲题且答错

    dfs(k - 1, sum + ); // 选择乙题且答对

    dfs(k - 1, sum - ); // 选择乙题且答错

}

int main() {

    dfs(4, 0); // 一共4人,初始得分为0

    printf("%d\n", ans);

    return 0;

}

c++队列的问题,学习图时在成员函数使用了pop(),但是无效,请问是什么原因?

       问题在于你的queue<int> adj(int v) 函数返回的是一个queue的拷贝,而不是queue本身。

       改成

        queue <int>& adj(int v) //获取和顶点v相邻的所有顶点

        {

        return adjacent[v];

        }

       全部源码如下:

       #include<iostream>

       #include<queue>

       using namespace std;

       class Graph {

       public:

        Graph(int v) //创建一个包含v个顶点但不包含边的图

        {

        this -> adjacent = new queue < int > [v];

        this -> V = v;

        this -> E = 0;

        }

        int Vnum() //获取顶点的数量

        {

        return this -> V;

        }

        int Enum() //获取边的数量

        {

        return this -> E;

        }

        void addEdge(int v, int w)

        //向图中增加一条边 v-w

        {

        this -> adjacent[v].push(w);

        this -> adjacent[w].push(v);

        this -> E++;

        }

        queue <int>& adj(int v) //获取和顶点v相邻的所有顶点

        {

        return adjacent[v];

        }

       private:

        int V; //顶点数量

        int E; //顶点边数量

        queue < int > * adjacent;

       };

       class DepthFirstSearch {

       public:

        DepthFirstSearch(Graph G, int s) { //构件深度优先搜索对象,利用深度优先搜索找出G图中s顶点的所有相同顶点

        this -> marked = new bool[G.Vnum()];

        for (int i = 0; i < G.Vnum();

        ++i) {

        marked[i] = false;

        }

        this -> N = 0;

        dfs(G, s);

        }

        void dfs(Graph G, int v) //利用深度优先搜索找出G中v顶点的所有相通顶点

        {

        marked[v] = true;

        int w = G.adj(v).front();

        while (!G.adj(v).empty()) //找到v队列里的内容

        {

        if (!marked[w]) {

        dfs(G, w);

        }

        cout << "队列大小:" << G.adj(v).size() << endl;

        G.adj(v).pop();

        cout << "队列删除后的大小:" << G.adj(v).size() << endl;

        if (G.adj(v).empty() == 1) {

        break;

        }

        w = G.adj(v).front();

        }

        this -> N++;

        //N加1 的位置放在当前节点变true的时候

        }

        bool mark(int w) //判断w与s是否相通

        {

        return marked[w];

        }

        int count() {

        return N;

        }

        private: bool * marked; //索引代表顶点,值表示当前顶点是否已经被搜索

        int N; //记录有多少个顶点与s顶点相同

       };

       int main() {

        Graph g();

        g.addEdge(0, 6);

        g.addEdge(0, 2);

        g.addEdge(0, 1);

        g.addEdge(0, 6);

        g.addEdge(5, 3);

        g.addEdge(5, 4);

        g.addEdge(3, 4);

        g.addEdge(4, 6);

        g.addEdge(7, 8);

        g.addEdge(9, );

        g.addEdge(9, );

        g.addEdge(, );

        g.addEdge(9, );

        DepthFirstSearch * DFS = new DepthFirstSearch(g, 0);

        int num = DFS -> count();

        cout << num << endl;

        return 0;

       }

搜索关键词:修改封包源码教程