主頁 >  其他 > 資料結構與演算法大作業:走迷宮程式(C語言,DFS)(代碼以及思路)

資料結構與演算法大作業:走迷宮程式(C語言,DFS)(代碼以及思路)

2023-05-10 08:09:58 其他

好家伙,寫大作業,本篇為代碼的思路講解

 

1.大作業要求

走迷宮程式

問題描述:

以一個 m * n 的長方陣表示迷宮, 0和1分別表示迷宮的通路和障礙, 設計一個程式, 對任意設定的迷宮, 求出一條從入口到出口的通路, 或得出沒有通路的結論,

基本要求:

(1) 實作一個以鏈表做存盤的堆疊型別, 然后撰寫一個求解迷宮的非遞回程式, 求的通路以三元組(i, j, d) 的形式輸出, 其中:(i, j) 指示迷宮中的一個坐標, d 表示走到下一坐標的方向, 如: 對于下列資料的迷宮, 輸出一條通路:

(1, 1, 1),(1, 2, 2),
(2, 2, 2),(3, 2, 3),(3, 1, 2) ……,

(2) 撰寫遞回形式的演算法, 求得迷宮中所有可能的道路;

擴展功能要求:

以方陣形式輸出迷宮及其到道路

測驗資料: 迷宮的測驗資料如下: 左上角(1, 1) 為入口, 右下角(8, 9) 為出口,

 

作業要求

1、 選題:從4個題目中任選其一,獨立完成,程式至少采用所學過的一種資料結構(鏈表、堆疊、佇列、樹等)實作,學生可以根據自己的需求分析適當地調整程式的合理性,使得程式能夠更加貼近實際,每個題目選題人員不得超過15人,向學委報名選題情況,先報先得,每個題目滿15人后必須另選其他題目,

2、 程式代碼要求:程式要求能夠正常運行,基本功能必須全部實作,完成可選做的擴展功能將得到較高的分數,容錯性強和功能細節考慮更完全也將得到較高的分數,

3、 開發語言:軟體工程和資料科學與大資料技術專業用Java語言,計算機科學與技術專業用C或C++語言,

 

2.分析

來概括一下

這是個迷宮程式,手動輸入迷宮,找出所有解,輸出所有解

資料結構要用堆疊

解法:

我們用一個二維度陣列保存這個"迷宮"

1.隨后,我們確定起點和終點,

2.先站在起點上,將起點入堆疊

3.我們開始尋路,按照東南西北(即右下左上)的方向順序尋找下一坐標

3.1.如果該方向上有路,將下一坐標入堆疊,"走到"這個坐標上

3.2.如果下一坐標上是墻,則回傳

3.3.如果下一個點是出口,則列印線路

 

3.單路徑版本

大概是這樣了

代碼如下:

單路徑版本

#include <stdio.h>
#include <stdlib.h>
#include <string.h> 
#define MAXN 20
struct mark // 定義迷宮內點的坐標型別
{
    int x;
    int y;
};
struct Element // 鏈堆疊元素結點
{
    int x, y; // x行,y列
    int d;      // d下一步的方向
};

typedef struct LStack // 鏈堆疊
{
    Element elem;
    struct LStack *next; // 指標變數
};

typedef LStack *PLStack;

/*……………………………堆疊函式……………………………*/
int InitStack(PLStack &S) // 構造空堆疊
{
    S = NULL;
    return 1;
}
int StackEmpty(PLStack S) // 判斷堆疊是否為空
{
    if (S == NULL)
        return 1;
    else
        return 0;
}
int Push(PLStack &S, Element e) // 壓入新資料元素
{
    PLStack p;
    p = (PLStack)malloc(sizeof(LStack));
    p->elem = e;
    p->next = S;
    S = p;
    return 1;
}
int Pop(PLStack &S, Element &e) // 堆疊頂元素出堆疊
{
    PLStack p;
    if (!StackEmpty(S))
    {
        e = S->elem;
        p = S;
        S = S->next;
        free(p);
        return 1;
    }
    else
        return 0;
}
/*……………………求迷宮路徑函式……………………………*/
void MazePath(struct mark start, struct mark end, int maze[MAXN][MAXN], int diradd[4][2])
{
    int i, j, d;
    int a, b;
    Element elem, e;
    PLStack S1, S2;
    InitStack(S1);
    InitStack(S2);
    maze[start.x][start.y] = 2; // 入口點作上標記
    elem.x = start.x;
    elem.y = start.y;
    elem.d = -1; // 開始為-1
    Push(S1, elem);
    while (!StackEmpty(S1)) // 堆疊不為空 有路徑可走
    {
        Pop(S1, elem);
        i = elem.x;
        j = elem.y;
        d = elem.d + 1; // 下一個方向
        while (d < 4)    // 試探東南西北各個方向
        {
            a = i + diradd[d][0];
            b = j + diradd[d][1];
            if (a == end.x && b == end.y && maze[a][b] == 0) // 如果到了出口
            {
                elem.x = a;
                elem.y = b;
                elem.d = 886; // 方向輸出為-1 判斷是否到了出口
                Push(S1, elem);
                printf("\n0=東 1=南 2=西 3=北 886為則走出迷宮\n\n通路為:(行坐標,列坐標,方向)\n");
                while (S1) // 逆置序列 并輸出迷宮路徑序列
                {
                    Pop(S1, e);
                    Push(S2, e);
                }
                while (S2)
                {
                    Pop(S2, e);
                    printf("-->(%d,%d,%d)", e.x, e.y, e.d);
                }
                return; // 跳出兩層回圈,本來用break,但發現出錯,exit又會結束程式,選用return
            }
            if (maze[a][b] == 0) // 找到可以前進的非出口的點
            {
                maze[a][b] = 2; // 標記走過此點
                elem.x = i;
                elem.y = j;
                elem.d = d;
                Push(S1, elem); // 當前位置入堆疊
                i = a;            // 下一點轉化為當前點
                j = b;
                d = -1;
            }
            d++;
        }
    }
    printf("沒有找到可以走出此迷宮的路徑\n");
}
/*……………………………建立迷宮……………………………*/
void initmaze(int maze[MAXN][MAXN])
{
    int i, j;
    int m, n;                       // 迷宮行,列
    printf("請輸入迷宮的行數 m="); // 輸入迷宮
    scanf("%d", &m);
    printf("請輸入迷宮的列數 n=");
    scanf("%d", &n);
    printf("\n請輸入迷宮的各行各列:\n用空格隔開,0代表路,1代表墻\n", m, n);
    for (i = 1; i <= m; i++)
    {
        for (j = 1; j <= n; j++)
            scanf("%d", &maze[i][j]);
    }
    printf("你建立的迷宮為\n");
    for (i = 0; i <= m + 1; i++) // 加一圈圍墻
    {
        maze[i][0] = 1;
        maze[i][n + 1] = 1;
    }
    for (j = 1; j <= n; j++)
    {
        maze[0][j] = 1;
        maze[m + 1][j] = 1;
    }
    for (i = 0; i <= m + 1; i++) // 輸出迷宮
    {
        for (j = 0; j <= n + 1; j++)
            printf("%d ", maze[i][j]);
        printf("\n");
    }
}

int main()
{
    int sto[MAXN][MAXN];
    struct mark start, end;                                // start,end入口和出口的坐標
    int add[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; // 行增量和列增量 方向依次為東西南北
    initmaze(sto);                                        // 建立迷宮
    printf("輸入入口的橫坐標,縱坐標[空格隔開]\n");
    scanf("%d %d", &start.x, &start.y);
    printf("輸入出口的橫坐標,縱坐標[空格隔開]\n");
    scanf("%d %d", &end.x, &end.y);
    MazePath(start, end, sto, add); // find path
    printf("\n");
}

 

效果如下:

 

看上去沒什么問題了,

 

但是,這種方法無法實作多條路徑的列印

所以還是要使用搜索演算法

下面,我們使用深度優先搜索來解決這個問題

此處我們使用遞回的思想

 

4.最終版本

解法由:

用一個二維度陣列保存這個"迷宮"

1.隨后,我們確定起點和終點,

2.先站在起點上,將起點入堆疊

3.我們開始尋路,按照東南西北(即右下左上)的方向順序尋找下一坐標

  3.1.如果該方向上有路,將下一坐標入堆疊,"走到"這個坐標上

  3.2.如果下一坐標是墻,則進行下一次回圈

  3.3.如果下一個點是出口,則列印線路

 

改為

用一個二維度陣列保存這個"迷宮"

1.隨后,我們確定起點和終點,

2.先站在起點上,將起點入堆疊

3.尋路方法(){

  "走到下一點上"(第一次呼叫時不做這步)

  3.1.開始尋路,按照東南西北(即右下左上)的方向順序確定下一坐標,

  |  3.1.1如果該方向上有路,下一坐標入堆疊,并標記為2(標記為走過)

  |  |  3.1.1.1如果下一個點是出口,則列印線路,將下一坐標標記為0,堆疊頂出堆疊

  |  |  3.1.1.2.呼叫尋路方法

  |   3.1.2.開始下一次回圈,回到3.1

  3.2.出堆疊,當前點賦值為0

}

 

核心演算法部分實作:

//-----------遍歷迷宮尋找路徑(dfs)------------
void mazePath(int x,int y,int endx,int endy,int n,int m,Stack s){
    int newx,newy,i;
    Node t;
    for(i=0;i<4;i++){
        newx=x+direction[i][0];
        newy=y+direction[i][1];
        if(newx>=0&&newx<n&&newy>=0&&newy<m&&maze[newx][newy]==0){    //下一個路能走 
            push(newx,newy,s);
            maze[newx][newy]=2;
            if(newx==endx&&newy==endy){//走到出口 
                flag++;
                printPath(s,n,m);
                maze[newx][newy]=0;
                pop(s);
            }
            else{
                mazePath(newx,newy,endx,endy,n,m,s); //開始遞回 
            }
        }
    }
    maze[x][y]=0;   //遍歷完四個方向之后回溯前將自己賦為空
    pop(s);
}

 

完整代碼:

所有路徑版本:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>  
#define MAXN 20
 
/*  *建立一個二維陣列存迷宮
    *要是四個方向能有位置則壓入堆疊,要是下一步沒有則彈出堆疊回溯
    *直到找到終點為止
*/
int direction[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};  //定義一個陣列存四個方向運算元
int MIN=100;//用于記錄最小路徑 
int maze[MAXN][MAXN];
int flag=0;
 
//堆疊中存位置以及遍歷時所走的方向,列印時可以顯示出來
//堆疊的元素節點 
typedef struct Node{
    int x;
    int y;
    struct Node *next;
}Node;
 
typedef Node* Stack;     //定義資料結構堆疊 Stack

/*……………………………堆疊函式……………………………*/
//-----------創建一個空堆疊--------------
Stack creakEmptyStack(){
    Stack p;
    p=(Stack)malloc(sizeof(Node));    //申請一個空間
    if(p){
        p->next=NULL;
        return p;
    }

}
 
//------------將元素壓入堆疊----------------
void push(int x,int y,Stack s){
    Stack p;
    p=(Stack)malloc(sizeof(Node));
    if(p){                   //如果申請空間成功則用頭插法將元素壓入
        p->x=x;
        p->y=y;
        if(!s->next) p->next=NULL;  //如果此時堆疊里還沒有任何元素,則p此時為第一個結點
        else p->next=s->next;  //否則將p插入頭結點之后
        s->next=p;
    }
    else{
        printf("No space!\n");
    }
}
 
//-------------檢測堆疊是否為空--------------
int isEmpty(Stack s){           //為空則回傳1,不為慷訓傳0
    if(s->next==NULL) return 1;
    else return 0;
}
//--------------將元素彈出堆疊----------------
void pop(Stack s){
    Stack p;
    p=s->next;
    if(p->next){
        s->next=p->next;
        free(p);
    }
    else return;
}
//------------取堆疊頂元素------------------
Node top(Stack s){
    Node t;
    //判斷是否為空,若不為空則回傳
    t=*(s->next);
    return t;
}
 
void mazePath(int x,int y,int endx,int endy,int n,int m,Stack s);
void printPath(Stack s,int n,int m);
 
int main()
{
    int n,m,i,j,xa,xb,ya,yb,ox;
    //--------------建立迷宮--------------
    printf("請輸入迷宮大小:(長、寬)\n");
    scanf("%d%d",&n,&m);
    if(n<=20&&m<=20){
        printf("請選擇構建迷宮的方式:\n0.隨機生成迷宮\n1.手動輸入迷宮\n"); //實際上不是0就可以手動輸入
        scanf("%d",&ox);
        for(i=0;i<n;i++){
            for(j=0;j<m;j++){
                if(!ox)maze[i][j]=rand()%2;    //這里為偽亂數
                else scanf("%d",&maze[i][j]);
            }
        }
         printf("\n");
        //----------輸出構建迷宮-------------
        printf("生成的迷宮如下:\n");
        for(i=0;i<n;i++){
            for(j=0;j<m;j++){
                printf("%d  ",maze[i][j]);
            }
            printf("\n");
        }
 
        printf("請輸入起點及終點:\n");
        scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
        
        //標記起點
        maze[xa-1][ya-1]=2;                        
 
        //創建一個空堆疊
        Stack s=creakEmptyStack();

        mazePath(xa-1,ya-1,xb-1,yb-1,n,m,s);
        printf("最短路徑長度為:%d",MIN);
        if(!flag) printf("沒有成功找到路徑\n");
    }
    else printf("輸入資料超出迷宮范圍\n");
}
 
//-----------遍歷迷宮尋找路徑(dfs)------------
void mazePath(int x,int y,int endx,int endy,int n,int m,Stack s){
    int newx,newy,i;
    Node t;
    for(i=0;i<4;i++){
        newx=x+direction[i][0];
        newy=y+direction[i][1];
        if(newx>=0&&newx<n&&newy>=0&&newy<m&&maze[newx][newy]==0){    //下一個路能走 
            push(newx,newy,s);
            maze[newx][newy]=2;
            if(newx==endx&&newy==endy){//走到出口 
                flag++;
                printPath(s,n,m);
                maze[newx][newy]=0;
                pop(s);
            }
            else{
                mazePath(newx,newy,endx,endy,n,m,s); //開始遞回 
            }
        }
    }
    maze[x][y]=0;   //遍歷完四個方向之后回溯前將自己賦為空
    pop(s);
}
 
//-------------列印迷宮路徑-----------------
void printPath(Stack s,int n,int m){
    int cont =0;    //計算路徑長度
    s=s->next;
    int i=0,j=0;
    printf("第%d條路徑為:\n",flag);
    for(i=0;i<n;i++){                         //按圖形輸出
        for(j=0;j<m;j++){
            if(maze[i][j]==2) printf("*  ");
            else printf("%d  ",maze[i][j]);
        }
        printf("\n");
    }
    while(s->next){                          //將堆疊中的元素輸出為直觀路徑
        printf("(%d,%d)->",s->x+1,s->y+1);
        s=s->next;
        cont++;
    }
    printf("(%d,%d)",s->x+1,s->y+1);
    cont++;
    if(cont<MIN) MIN=cont; 
    printf("\n");
    printf("路徑長度為:%d\n\n",cont);
}

 

測驗樣例:

 

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/552016.html

標籤:其他

上一篇:QUIC在京東直播的應用與實踐

下一篇:返回列表

標籤雲
其他(158723) Python(38124) JavaScript(25407) Java(18024) C(15222) 區塊鏈(8263) C#(7972) AI(7469) 爪哇(7425) MySQL(7172) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5336) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4570) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1965) Web開發(1951) HtmlCss(1932) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1875) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 資料結構與演算法大作業:走迷宮程式(C語言,DFS)(代碼以及思路)

    好家伙,寫大作業,本篇為代碼的思路講解 1.大作業要求 走迷宮程式 問題描述: 以一個 m * n 的長方陣表示迷宮, 0和1分別表示迷宮的通路和障礙。 設計一個程式, 對任意設定的迷宮, 求出一條從入口到出口的通路, 或得出沒有通路的結論。 基本要求: (1) 實作一個以鏈表做存盤的堆疊型別, 然后 ......

    uj5u.com 2023-05-10 08:09:58 more
  • QUIC在京東直播的應用與實踐

    本文將分別從推流端、中臺源站、直播云CDN及播放端四個部分串燒式地介紹與直播相關的一些技術實踐,并重點介紹QUIC技術的應用情況及收益。 ......

    uj5u.com 2023-05-10 08:08:36 more
  • 1000個已成功入職的軟體測驗工程師簡歷經驗總結:軟體測驗工程師簡

    軟體測驗面試常見問題通常分為兩大類,一類是考察你的專業技能,另一類是考察你的穩定性、努力程度、情商等因素。并且所有初級測驗工程師的面試題中我發現超過90%都是基礎性的面試題,2020年只要掌握功能測驗和介面測驗,然后有一定的自動化基礎,再加上面試的時候態度ok(不卑不亢即可), 基本上在一線找一份薪... ......

    uj5u.com 2023-05-10 08:08:10 more
  • KubeEdge在邊緣計算領域的安全防護及洞察

    摘要:著重介紹Kubeedge在安全防護方面的實踐,并介紹OpenSSF在開源軟體安全方面的計劃與目標。 本文分享自華為云社區《KubeEdge在邊緣計算領域的安全防護及洞察》,作者:華為云云原生團隊。 隨著開源軟體安全漏洞持續引起世界各地政府和企業的關注,越來越多的組織、開發人員、研究人員和安全專 ......

    uj5u.com 2023-05-10 08:07:55 more
  • 使用 shell 腳本自動申請進京證 (六環外) —— debug 程序

    寫好的自動辦理六環外進京證腳本跑不通,總是回傳辦理業務人數較多 (500) 錯誤,Charles / VNET 抓包、android 交叉編譯 jq、升級 curl…都不起作用,最侄訓是神奇的 adb shell 幫了大忙,最后定位到根因,居然是用 shell 字串長度作為資料長度導致的,這錯誤犯... ......

    uj5u.com 2023-05-10 08:07:30 more
  • 2步打通ModelArts和Astro,實作AI應用快速落地

    摘要:本文以 ModelArts 的“找云寶”自動學習 AI 應用為例,結合低代碼平臺 Astro 輕應用快速實作一個“找云寶”小應用。 本文分享自華為云社區《【我與ModelArts的故事】2步打通 ModelArts 和 Astro 實作 AI 應用落地》,作者:胡琦。 引言 隨著 GPT 火爆 ......

    uj5u.com 2023-05-10 08:06:40 more
  • 【三維CAD軟體】上海道寧為您帶來國際一流的國產自主可控的三維C

    天工CAD?融合了新迪數字收購的國際一流三維CAD軟體技術和十幾年CAD軟體研發積累,是一款國產自主可控的三維CAD軟體,產品成熟度和技術能力比肩國際先進水平滿足工業企業研發設計需求 ......

    uj5u.com 2023-05-10 08:06:26 more
  • 人人實作ChatGPT自由,手把手教你零擼部署自己聊天私服

    我們知道chat gpt最近非常的火爆,朋友圈啊,短視頻到處都是chat gpt身影。 但是網上看到各種教程資源,都是不是百分一百的免費,毫無保留教給你的,要么是賣賬號 要么是割韭菜的。其實沒有什么可以學習的,使用他也很簡單,付費學習這些真不值得, 大家不要再去看網上那些其亂七八糟的了,什么使用需要 ......

    uj5u.com 2023-05-10 08:06:05 more
  • Laf Assistant:云開發從未如此爽快!

    原文鏈接:https://forum.laf.run/d/67 工欲善其事,必先利其器。在撰寫代碼時,IDE 也是我們不可或缺的。它可以讓我們更高效地完成代碼撰寫,提高開發效率。因此,IDE 是我們撰寫代碼中最親密的伙伴之一。 雖然 Laf 云開發有簡潔的 Web IDE,只要能打開瀏覽器就可以隨處 ......

    uj5u.com 2023-05-10 08:05:35 more
  • 精準測驗之程序與實踐

    精準測驗的核心組件包含的軟體測驗示波器、用例和代碼的雙向追溯、智能回歸測驗用例選取、覆寫率分析、缺陷定位、測驗用例聚類分析、測驗用例自動生成系統,這些功能完整的構成了精準測驗技術體系。 ......

    uj5u.com 2023-05-10 08:03:32 more