20182301 2019-2020-1 "객체 지향 프로그래밍 및 데이터 구조"열 번째 주 학습 요약

20182301 2019-2020-1 "객체 지향 프로그래밍 및 데이터 구조"열 번째 주 학습 요약

내용 요약 학습

구성을 나타내는 구성도
  • 정점 (정점) A와 데이터 요소 드로잉
  • 사이드 (에지) : A와,이 정점을 연결 그리기 라인

  • G = (V, E) 或者 G = (V (G), E (G))
    • V (G)는 모든 정점들의 세트의 구성을 나타내고, 정점은 다른 번호 또는 문자로 표시 할 수있다. E (G)는 그래프 구조의 모든 에지들의 집합이고, 각각의 측면은 두 개의 정점을 연결로 표시된다.
    • 도 구성 정점 세트 V (G)가 비어 있지 않은 정점을 포함해야하고, 구성 설정을 나타내는 측면도에는 가장자리를 보여주는, 비어있을 수도있다.

      기본 개념지도
  • 무향 그래프
  • 구조의 관점에서, 모서리 모두에는 방향이 없다면, 이것은 그것 무향 그래프라고지도. 같은도에 도시 된 전형적인 II 무향 그래프. 필요하지 않을 때는 그림에서 아무 무 지향성 가장자리 때문에, 우리는 정점의 순서의 두 가지 측면을 나타냅니다. 예를 들어, 정점과 정점 V5 사이 VI 가장자리 (V2, V6)으로, 그것은 (V6, V2)와 같이 표현 될 수있다 표현 될 수있다.

  • 감독 그래프
  • 구조를 도시 한 도면은, 가장자리는이도 III에 도시도 유향 그래프라고 방향성이다. 주문이 두 정점을 요구했을 때, 그래프의 에지 방향성 때문에, 우리는 모서리를 나타낸다. 우리 각괄호 예컨대 관한 에지를 나타내는 사용 <V2, V6>는 정점 V2의 정점에서 V6를 나타내고, <V6, V2> V6가 정점 V2에 정점을 나타낸다.

  • 학위 정점
  • 정점의 정점을 연결하는 에지들의 개수가 언급. 유향 그래프의 다른 정점 및 거기 무향 그래프 데. 무향 그래프를 들어, V의 정점 D (V)로 언급 정점에 연결된 에지의 수이며, 이는 상대적으로 간단하다.
  • 이중 음자 약간 더 복잡 할 경우, 정점 V 접속 측의 지향성에있어서, 정점 점 정도의 침투 정도가있다.
    • 이 ID (V)로 언급 엔드 포인트 수의 측면의 정점이다.
    • 정점의 정도 OD (V)로 언급 에지 포인트들의 수이다.
  • 인접 행렬
  • 참조하는 두 개의 인접한 꼭지점도 에지 구조의 정점이다. 다른 인접한 꼭지점에게 유향 그래프와 거기 무향 그래프 데. 무향 그래프 인접한 꼭지점은 비교적 간단하다.
  • 이중 음자 약간 더 복잡 할 경우, 정점 V 접속 측의 지향성에있어서, 두 정점 시작 정점 (원점 또는 시작점) 및 최종 정점 (엔드 포인트)로 지칭된다. 거기는 그래프의 정점에 인접한 두 가지 범주로 나누어진다 :
    • 정점 가장자리에 인접 : 초기 정점의 정점을 연결하는 가장자리. 예를 들어, 조성물 <V2, V6>이 에지의 두 정점 V2는 인접하는 에지의 정점 V6이다.
    • 인접한 꼭지점 가장자리 : 정점의 끝 가장자리에 연결된 정점. 예를 들어, 조성물 <V2는 V6>이 에지의 두 정점 V6는 에지 인접 정점 V2이다.
  • 무향 전체 그래프
  • 각각 두 꼭지점 사이의 수치는 자유 가장자리의 존재하는 경우,이 구조는 완전한 그래프도 방향성이 언급된다. 도 IV에 나타낸 대표적인 완전한 무향 그래프.

  • 완전한 무향 그래프 M 가장자리 M (M-1) / (2)의 전체 수의 정점이 포함되어 이론적으로 입증 할 수있다. 예를 들어, 에지의 수는도 4 개이고. 5 (5-1) / 2 = 10.
  • 감독 완전한 그래프
  • 유향 그래프의 경우,이 구조는도 지칭되는 두 정점 사이의 각 에지에 대향하는 두 방향은 완전도가 관한 것이다. V.도에 도시 된 바와 같이 전형적인, 전체 그래프를 지시

  • 이론적 N 정점 완전한 그래프이다 함유 들면 증명할 수, 에지의 수는 N (N-1)이다. 양측이 각각 두 꼭지점 사이의 필요 때문에,이 잘 이해되고, 배 전체 무향 그래프이다.
  • 방향성 비순환 그래프 (DAG FIG)
  • 여러 측면이 점에 백업을 통해 정점 방향 그래프에서 출발이없는 경우,이 그래프는 방향성 비순환 그래프이다.
  • 방향성 비순환 그래프는 블록 사슬 분야에 사용될 수있다.
  • 차트 오른쪽과지도를받을 수 없음
  • 본원 오른쪽 에지 노드와 노드 사이의 이러한 측면이도 특정 값을받을되지 않는다 들면 대응하는 수치 값을 갖는지 인 값으로 이해 될 수있다. 오른쪽 노드와 노드 사이도 관계 에지 값은 시간이되도록, 이러한 하나 개의 정점 또는 시간에 다른 정점 두 꼭지점 사이의 거리의 수치를 대표하는 값을 나타내는 데 요구 될 수있다 . 그것은도도 오른쪽이라고 두 노드 사이의 관계를 나타내고;

  • 연결 그래프
  • 그래프의 각 노드는 각각의 노드가 반드시 있으므로 아래와 같이 본도 연결을 포함한다는 것이다 접속 에지되지 않는다 :

  • 이 그림이 완전히 연결되지 않은에서 위의를 찾을 수 있습니다.
  • 도의 간단한 (단순 그래프)
  • 노드 사이에 두 개의 노드와 가장자리, 특수의 두 반대편이 있습니다 들어
    • 림 (자기 루프) 이후 : 에지 노드 자체가 자신을 가리키는.
    • 평행선 (병렬 에지) : 두 노드 사이에 접속하는 다수의 에지의 존재.
  • 양측은이 상황을 병렬 측면을 사용할 수 있도록, 이러한 세 방법으로, 도로가 없을 수 있습니다 도시 B에 도시 A로부터 같은 의미가있다. 그러나, 알고리즘 디자인에 양측은 달성하기가 더 어렵습니다. 그림은 단순히 양쪽을 고려하지 않습니다.

일반적인 그래프 알고리즘
  • 너비 우선 탐색
    • 탐색 방법 : 반경 광역 주위 시작 정점으로부터 제 순회
    • 방법 : 순서를 보유하는 큐의 필요성 액세스에 인접 정점의 정점을 순서를 대기열에서 이동 통과해서 지정
    • 최고 의사 :
      • 방문으로 초기 액세스 노드는 노드 V 및 v 레이블.
      • 노드 큐 V
      • 큐가 비어 있지 않은 경우, 그렇지 않으면 알고리즘 끝을 계속합니다.
      • 큐는 HOL U가 노드 얻었다.
      • w 제 1 인접 노드에서 노드 U를 찾는다.
      • 인접 노드 w 노드 u는 3 단계로 이동 존재하지 않는 경우, 그렇지 않으면, 세 단계에 따라주기 :
        1. 아직 w 노드가 액세스 한 경우 방문으로, 액세스 노드는 W 및 표시.
        2. w 노드 큐
        3. 인접 노드를 다음 w 노드 U에 w 다음 인접한 노드 찾기, 6 단계로 이동합니다.
    • 콘텐츠 해석 : 1-> 2-> 3-> 4 -> 5> 6> 7-> 8 인 알고리즘의 너비 우선 탐색 순서
  • 깊이 우선 탐색
    • 순회 방법 : 정점에서 시작하여, 각 정점의 엣지 와이즈 탐험. (노골적 : 사용 한 방법!)
    • 방법 : 저장소에 스택의 순서가 정점을 발생 횡단 고정함으로써, 다만, 노드가 큐의 첫 번째 방문하지 (때문에 그것의 반복 사용)가 아닌 스택을 얻기 위해 . 이 경우에는 인접한 정점은 다음 스택의 정점에 액세스하지 않으며,되지 않았습니다.
    • 최고 의사 :
      • 방문으로 초기 액세스 노드 V 및 노드 V는 표시.
      • w 제 1 인접 노드는 노드 (V)를 찾는다.
      • 존재하는 경우, W, 4, 그렇지 않으면 알고리즘 단부 진행.
      • 접근이 아닌 경우, 승 재귀 깊이 우선 탐색을 W (즉, w (V)와 같은 다른 후 123 단계).
      • 노드 다음 인접한 노드의 V 인접한 노드 승 찾기, 3 단계로 이동합니다.
    • 이미지 설명 : 1-> 2-> 3-> 8> 5-> 3-> 6> 7의 깊이 우선 탐색 순서를
최단 경로 문제
  • 단일 소스 최단 경로도받을 자격이되지 않습니다.
  • 첫째, 우리가 0으로 설정되어 경로 길이의 시작점 것, 다른 정점 경로 길이는 V1에 대한 시작 지점 (범례? 분포하고, 다른 가능한 값일 수도있다) 네가티브 번호로 다음의 예를 설정

  • 우리는 그 다음 긴, 출발 정점 포인트 경로가 확인 될 것이라는 본 실시 V3 및 V4의 경로 (1), 즉, 길이의 시작점 0 경로 길이의 정점 :

  • 다음으로는, 우리는 경로 길이의 정점에 1 뾰족한 경로 길이 정점 (V3 및 V4)이 2로 설정됩니다, 같은 확신 할 수있는 정점 정점 1 길이 2의 경로로 지적의 경로 길이. 그러나 이번에는 문제가 발생합니다 : V3 V4는 뾰족한 정점이지만, 경로 길이 V3는 분명히 2로 설정되어서는 안된다. 우리가 "알려진"정점의 집합의 알려진 경로 길이를 필요 그래서 마크, 알려진 경로 길이는 더 이상 방법이 명시된 코드를 부여 특히, 자신의 정점을 변경하지 않습니다. 본 실시 예에서는, 경로 길이가 정점에 설정되는 2 V2, V5, V6 인

  • 규칙은 : 정점 나 미지 경로 길이에 관한 것이다 정점의 경로 길이 I + 1, I 0, 즉 종료 조건 : 전류 경로 길이가 다른 버텍스 I 정점 또는 정점이 가리키는 점을하지 않는 것이다 그것은 알려져있다.
  • 참고 종료 조건은 시작 지점으로 정점을 결정한 후, 정점은 우리의 예에서와 같이, 도달 할 수없는부터 다음 거기 출발점이 될 및 수 있기 때문에 우리는 모든 정점이 알려져 요구하지 않았다, 말을하는 것이 V0 경로에서 V0에 V1은 존재하지 않습니다.
  • 최단 경로의 계산 결과는 다음과 같이 구성되는 선형 테이블에 저장된다 :

  • 알려진 경우 정점, 최단 경로 길이의 시작점 자체 꼭지점 정면에서 최단 경로 : "선"은 테이블의 선형 소자, 셀의 각 행은 네 개의 요소 네 도메인이다.

  • 최단 경로 표 나타내는 프로세스 전에 계산되는, 이것은 다음과 같다 :
  • 간단한 의사 코드
//无权最短路径计算,图存于邻接表graph,结果存入pathTable,起点即start
void unweightedPath(Node* graph,struct pathNode* pathTable,size_t  start)
{
    pathTable[start].known=true;
    pathTable[start].distance=0; //若pathTable[x].distance为0,则其preV是无用的,我们不予理睬

    //初始化pathTable中的其他元素

    //curDis即当前距离,我们要做的是令distance==curDis的顶点所指的未知顶点的distance=curDis+1
    for(int curDis=0;curDis<numVertex;++curDis)
    {
        for(int i=0;i<numVertex;++i)
        {
            if(!pathTable[i].known&&pathTable[i].distance==curDis)
            {
                pathTable[i].known=true;
                //遍历pathTable[i]所指向的顶点X
                {
                    if(!pathTable[X].known)
                    {
                        pathTable[X].preV=i;
                        pathTable[X].distance=curDis+1;
                    }
                }
            }
        }
    }
}
  • 그래서 알 수없는이 알려진 것을하는 정점 정점 거리 = curDis + 무게
  • 아이디어는 해결하는 것입니다 : 우리는 모든 알려진 알 수없는 정점 포인트의 모든 정점이 그 거리가 우리의 거리를 수정할 수있는 최소한의, 최소한의 것입니다 수정 된이 미지의 정점을보고, 그것이 알려진 것과 나열합니다.

  • 먼저 시작 지점 V0라고 가정하면, 일반 초기화 (우리는 또한 가장자리 무게 아웃 식별)입니다 :

  • V1, V2, V3 : 그런 다음 우리는 모든 미지의 정점 가리키는 알려진 정점 (만 V0) 나열합니다. FOUND 다음의 거리를 수정하면 v1.distance = v0.distance + = 1 : 1, v2.distance = v0.distance + 3 = 3, v3.distance = v0.distance + 5 = 5. 우리는 거리의 V1 및 알려진 세트 V1, V2를 수정할 수 있도록 수정 된 후에 분명히 v1의 거리가 가장 작은 알 수없는 정점이며, V3는 이동하지 않습니다 :

  • V2, V3, V4 : 그런 다음 우리는 미지의 정점을 지적 알려진 모든 정점 (V0, V1)를 나열하는 것을 계속한다. 다음의 거리를 수정 발견하는 경우, v2.distance = v0.distance + = 3 세, v4.distance = v1.distance + = 2 일, v3.distance = v1.distance + 1 = 2 (그러나 또한 포인트 V3의 V0 하지만 v3으로 V1에서 v3으로 V0보다 경로 길이 더에 의해 그래서, 우리는 하나는 V4로, 만 거리 V4를 수정 선택 v3 및 새로운 최소 거리 V4 평행 적은 금액 거리 V3),, 그리고 V4는, 공지 된 다른 고정 설정된다 :

  • 우리 모두가 알 수없는 정점을 지적 알려진 모든 정점 (V0, V1, V4) 목록, 계속 : V2, V3, V6, 발견을 수정 한 경우, v2.distance = 3, v3.distance = 2, v6.distance = 그 3, 우리는 거리 V3를 수정 및 알려진 v3으로 설정하므로 :

  • 그 수정 한 경우, v2.distance = 3, v5.distance = 10, V6 발견 V2, V5, V6, 우리는 모든 알려진 모든 알 수없는 정점을 지적 정점 (V0, V1, V3, V4)를 나열, 계속합니다. 거리 = 3, 우리는 선택적으로 v2 및 V6에서 V2로 만 v2.distance을 수정하고 v2로 알려진 :

  • V5, V6, v5.distance = 5, v6.distance = 3, 수정 한 경우 우리는 V6를 수정할 수 있도록 발견 : 우리 모두가 알 수없는 정점의 알려진 모든 꼭지점을 나열 계속 :

  • 의 거리 = 5에 대한 변경, 우리는 알려진 알고리즘 목적으로하고 설정을 수정합니다 경우 마지막으로, 유일하게 알 수없는 정점 V5는 밖으로 설정 :

  • 도라는 제목 의사 :

//有权最短路径计算,图存于邻接表graph,结果存入pathTable,起点即start
void weightedPath(Node* graph,struct pathNode* pathTable,size_t  start)
{
    //初始化pathNode数组
    
    size_t curV;
    while(true)
    {
        //找到可确定distance的未知顶点中新distance最小的那个,存入curV,若没有则跳出循环
        //令pathNode[curV].distance和pathNode[curV].prev修改为正确的值
        pathNode[curV].known=true;
    }
}

교과서 학습과 문제 해결 과정

  • 질문 1 : 이해 위상 정렬
  • 문제 1 용액) 링크 5 참조 :(

  • 도 위상 정렬이 필요 정점을 정렬 수행됩니다 VX, VY의 경로가 존재하는 경우, 결과를해야 VX VY 정렬하기 전에.
  • 지도의 토폴로지 종류의 비순환 그래프를 가지고 있어야합니다.
    • VY의 위상 정렬 VX 반드시 전방 측 (VY, VX)의 요청 무향 그래프에 존재 에지 (VX, VY) 경우 확실히 존재하지만, 그들은 분명히 전면 VY, VX, 여야 모순이므로 위상 정렬은 방향성 그래프에 사용될 수있다.
    • 이러한 링 V0-V1-V4-V3-V0가 두 개의 서브 - 경로를 함축하는 도면 같이 유향 그래프에있다 : 경로의 관점에서 이전에있어서, V0-V1-V4 및 V4-V3-V0, 정렬 V0 마스트의 선행 V4의 결과와 위상 정렬 만 비순환 그래프에 이용 될 수 있도록, 또한 명백하게 모순 경로, V4에 선행해야 V0의 조건에 따라.
  • 이 개 기능은 비순환 그래프 감독이있다 :
    • 도는 비순환 향하는 경우, 0 도의 정점이 있어야한다.
    • 방향성 비순환 그래프가 있으면 그것을 제거하고 (지시 된 에지에서 정점을 출발점으로 필요) 정점 0은도 비순환 그래프 아직의 측면에 연결된다.
  • 의사 코드 :

void topSort(graph* g,size_t numVertex,size_t topResult)
{
    //两个表示顶点的变量,后面用
    size_t tempV,adjV;
    //存储各顶点入度的数组,顶点x的入度为indegree[x]
    size_t indegree[numVertex];
    伪:根据图g初始化indegree数组

    for(int i=0;i<numVertex;++i)
    {
        伪:从indegree中找到一个入度为0的顶点,存入tempV
        if(伪:没找到入度为0的顶点)
            伪:报错、返回
        
        topResult[i]=tempV;

        伪:通过g[tempV]遍历tempV为起点的边的终点,存入adjV
            indegree[adjV]--;
    }
}
  • 질문 2 :지도 및 무엇인지 깊이 우선 탐색의 가장 근본적인 차이의 폭 우선 탐색?
  • 문제 2 해결 방법 :
  • 접근이 채용 스택 비 재귀 깊이 우선 탐색 비 - 반복적 접근법을 사용하면 첫 번째 통과를 폭 큐
  • 깊이 우선 탐색은 멀리에 도착하지 않는 각 지점에 깊이 이동하는 것입니다. 선주문 특히 선주문, postorder있다; 또한 아래쪽으로 통과 위에서 층에 의해 제 순회 탐색 시퀀스 층이라고도
  • 질문 3 : 웹 크롤러의 깊이 우선 탐색과 관련, 자세히 살펴
  • 질문 3 해결 방법 :
  • (또한 FOAF 커뮤니티의 중간에, 더 자주 웹 체이서라는 웹 거미, 웹 로봇라고도 함) 웹 크롤러는 다음과 특정 규칙의 종류, 월드 와이드 웹 프로그램이나 스크립트에 자동으로 잡아 정보입니다. 기타 자주 사용하는 이름은 개미, 자동 색인, 시뮬레이션 프로그램이나 웜을 포함한다.
  • 액세스 제한의 빈도;
    • 헤더 체크섬 헤더 정보;
    • 동적 페이지 생성;
    • 동적 페이지 생성;
    • 로그인 제한;
    • 확인 코드 제한.
  • 파충류의 예
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Reptile {
    
    public static void main(String[] args) {
        // 传入你所要爬取的页面地址
        String url1 = "http://www.xxxx.com.cn/";
        // 创建输入流用于读取流
        InputStream is = null;
        // 包装流, 加快读取速度
        BufferedReader br = null;
        // 用来保存读取页面的数据.
        StringBuffer html = new StringBuffer();
        // 创建临时字符串用于保存每一次读的一行数据,然后 html 调用 append 方法写入 temp;
        String temp = "";
        try {
            // 获取 URL;
            URL url2 = new URL(url1);
            // 打开流,准备开始读取数据;
            is = url2.openStream();
            // 将流包装成字符流,调用 br.readLine() 可以提高读取效率,每次读取一行;
            br = new BufferedReader(new InputStreamReader(is));
            // 读取数据, 调用 br.readLine() 方法每次读取一行数据, 并赋值给 temp, 如果没数据则值 ==null,
            // 跳出循环;
            while ((temp = br.readLine()) != null) {
                // 将 temp 的值追加给 html, 这里注意的时 String 跟 StringBuffer
                // 的区别前者不是可变的后者是可变的;
                html.append(temp);
            }
            // 接下来是关闭流, 防止资源的浪费;
            if (is != null) {
                is.close();
                is = null;
            }
            // 通过 Jsoup 解析页面, 生成一个 document 对象;
            Document doc = Jsoup.parse(html.toString());
            // 通过 class 的名字得到(即 XX), 一个数组对象 Elements 里面有我们想要的数据, 至于这个 div的值,打开浏览器按下 F12 就知道了;
            Elements elements = doc.getElementsByClass("xx");
            for (Element element : elements) {
                // 打印出每一个节点的信息; 选择性的保留想要的数据, 一般都是获取个固定的索引;
                System.out.println(element.text());
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

코드 학습과 문제 해결 과정

  • 질문 1 : 정도와 침투를 계산할 때 0이 더 많은 항상, 그 이유는 무엇입니까?
  • 문제 1 해결 방법 :
  • 이 초기화되지 않았기 때문에, 그래서 0 기본 아무 문제는,이 없다
        for(i=0;i<5;i++){
            for(j=0;j<5;j++){
                a[i]=0;
                b[i]=0;
                dig[i][j]=-1;
            }
        }
  • 질문 2 : 입력 점 오버플 아래와 같이 할 수 :

  • 문제 2 해결 방법 :

for(i=0;i<5;i++){
            System.out.println("请输入第一个: ");
            int input0 = scan.nextInt();
            dig[i][j] = input0;
            for(j=1;;j++){
            System.out.println("请问是否有下一个接点 ");
                String kong = scan.nextLine();
                char yn = scan.next().charAt(0);
                if(('Y' == yn)||(yn == 'y')){
                    String kong2 = scan.nextLine();
                    int input = scan.nextInt();
                    dig[i][j] = input;
                    a[i]++;
                }
                else{
                    j=0;
                    break;
                }

            }
        }
        for(int k=0;k<5;k++) {
            for(j=0;j<5;j++){
                for(i=0;dig[j][i]!=-1;i++){
                    if(dig[j][i]==k)
                        b[k]++;
                }
            }
        }

총 코드

관리 코드 장 XIX

코드 책 장 XIX

(실행 결과 statistics.sh 스크립트를 스크린 샷)

지난 주 시험 잘못된 질문 요약

아니 최근 시험, 그래서 아무 잘못 질문

댓글은 학생들의 블로그와 코드를했다

  • 이번 주 학습 페어링

- 结对学习内容
    - 学习图的定义
    - 学习图的遍历
  • 지난 주 블로그 동료 평가의 경우

기타 (지각, 사고, 등, 선택 사양)

팀은 중요하다, 우리는 모든 어려움을 극복하기 위해 협력 할 수 있습니다.

학습 진행 막대

코드 라인 수 (추가 / 축적) 블로그 금액 (추가 / 축적) 시간 학습 (추가 / 축적) 중요한 성장
10,000 선 (30) 400시간
첫 번째 주 69분의 69 2/2 30/30 스캐너
두 번째 삼주 598분의 529 3/5 55분의 25 일반적인 클래스
넷째 주 1,300분의 300 2/7 80분의 25 JUnit 테스트 및 쓰기 수업
다섯째 주 3,563분의 2,665 2/9 110분의 30 원격와 인터페이스
여섯째 주 4,671분의 1,108 1/10 135분의 25 다형성 및 이상
주 세븐 6,617분의 1,946 3/13 160분의 25 스택, 큐
여덟 번째 주 7,448분의 831 1/14 185분의 25 정렬 찾기
주 나인 13,507분의 6,059 3/17 220분의 35 이진 검색 트리
열 번째 주 13,507분의 6,059 3/20 265분의 45 지도

당신이 계획 능력을 향상시킬 수있는 경우 최종 확인하려면 "계획된 학습 시간"과 "실제 학습 시간"을 기록하십시오. 이 연구는 매우 중요한 작품이다 유용합니다.
추정 식 소비 : Y = X + X / N , Y = XX / N, 훈련 더 자주, X를, Y가 닫히고.

참조 : 왜 추정되는 소프트웨어 엔지니어링 소프트웨어 열심히 , 소프트웨어 공학 추정 방법

  • 계획 연구 시간 : 30시간

  • 실제 공부 시간 : 45시간

  • : 상황을 개선하기 위해
    많은 다른 농축에, 자바를 학습 데이터 구조를 공부에가되지 않습니다 주.

참고 자료

추천

출처www.cnblogs.com/zhaopeining/p/11931443.html