디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

코딩 독학 6개월 차인데 간단한 알고리즘 짜봄

프갤러(39.7) 2024.08.20 19:08:35
조회 151 추천 0 댓글 1

인접 행렬 그래프 노드 가중치에 따라서 bfs나 다익스트라 값 뱉어내는 코드 ㅋㅋㅋㅋ

벡터에 0이 아닌 값을 집어넣고, 이걸 다시 배열 초기화에 넣고 돌려서, 배열 값이 0 이상인 수가 하나 이상일 때 다익스트라, 하나일 때 BFS 뱉어내는 코드 싸질러봄


class searchSystem : public adjGraph

{


  public:

    bool visited[MAX_NODE];

    int dist[MAX_NODE];

    

    vector<int> vec;

    

    void resetVisited() // 

    {

        for (int i = 0; i < MAX_NODE; i++)

        {

            visited[i] = false;

        }

    }

    

    void search() // 2. 벡터에 저장된 그래프를 이루는 수를 탐색하고 0아니면 저장

    {

        

        for (int i = 0; i < size; i++)

        {

            for (int j = 0; j < size; j++)

            {

                if (adjNode[i][j] != 0)

                {

                    vec.push_back(adjNode[i][j]);

                }

            }

        }

    }

    

   bool containsOnlyOneNumber() // 3. 

   {


    int inDebate[MAX_NODE] = {0};

    

    for (int i = 0; i < vec.size(); ++i) {

        int num = vec[i];

        inDebate[num]++;

    }


    int Count = 0;

    for (int i = 0; i < MAX_NODE; ++i) {

        if (inDebate[i] > 0) {

            Count++;

        }

    }


    return Count == 1;

}

    

    void operateSearch() // 1. 처음 검사 실행 함수

    {

        search();

        if (containsOnlyOneNumber()) //4 실행

        {

            bfs(0);

        }

        else

        {

            diskstra(0);

        }

    }

    

    

    

    void resetDist() //다익스트라 0을 무한 노드로 변경

    {

        for (int i = 0; i < size; i++)

        {

            for (int j = 0; j < size; j++)

            {

                if (adjNode[i][j] == 0)

                {

                    adjNode[i][j] = INF;

                }

            }

        }

    }

    

    void printDist() // 다익스트라

    {

        cout << "nodeNm :" << ' ';

        for (int i = 0; i < size; i++)

        {

            cout << getNode(i) << ' ';

        }

        cout << "\n";

        cout << "result :";

        for (int i = 0; i < size; i++)

        {

            cout << dist[i] << ' ';

        }

        cout << endl;

    }

    

    void diskstra(int start)

    {

        resetVisited();

        resetDist();

        

        for (int i = 0; i < size; ++i)

        {

            dist[i] = adjNode[start][i];

        }

        dist[start] = 0;

        visited[start] = true;

        

        for (int i = 0; i < size - 2; ++i)

        {

            int min_node = getSmallIndex();

            visited[min_node] = true;

            for (int j = 0; j < size; ++j)

            {

                if (!visited[j] && adjNode[min_node][j] != 0 &&

                    dist[min_node] + adjNode[min_node][j] < dist[j])

                {

                    dist[j] = dist[min_node] + adjNode[min_node][j];

                }

            }

        }

        printDist();

    }

    

    int getSmallIndex() // 다익스트라

    {

        int min = INF;

        int minpos = 0;

        for (int i = 0; i < size; i++)

        {

            if (dist[i] < min && !visited[i])

            {

                min = dist[i];

                minpos = i;

            }

        }

        return minpos;

    }

    

    

    void bfs(int start)

    {

        queue<int> q;

        visited[start] = true;

        

        q.push(start);

        

        cout << "bfs operate :" << ' ';

        

        while (!q.empty())

        {

            int number = q.front();

            q.pop();

            cout << getNode(number) << ' ';

            

            for (int i = 0; i < size; i++)

            {

                if (adjNode[number][i] != 0 && !visited[i])

                {

                    visited[i] = true;

                    q.push(i);

                }

            }

        }

        cout << endl;

    }

      

};

   


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 지금 결혼하면 스타 하객 많이 올 것 같은 '인맥왕' 스타는? 운영자 24/10/28 - -
공지 프로그래밍 갤러리 이용 안내 [74] 운영자 20.09.28 38858 62
2767130 헌법 - 법과 양심의 양심이란- 프갤러(121.172) 10:21 14 1
2767129 연산처리량에 관하여- 프갤러(121.172) 09:57 26 1
2767128 프붕이들아 빨리 일어나서 개발을 하자! [3] 40대프린이(118.235) 09:51 37 0
2767126 요오~ 칭쿠들~ 나왔당- 프갤러(121.172) 09:21 24 0
2767125 코린이 기상!!!!!! 귀여운와따시갤로그로 이동합니다. 08:34 19 0
2767123 [잡정보] ChatGPT 의 등장이 소프트웨어 업계만 타격은 아닌 듯. [6] +abcd3421갤로그로 이동합니다. 07:49 78 0
2767122 나는내향적이야 나는조현병이야 [2] 손발이시립디다갤로그로 이동합니다. 07:41 44 0
2767120 인텔 차세대 CPU 코어 울트라 게임용으로 부적합 [2] 프갤러(121.88) 07:09 40 1
2767118 스벨트4 -> 스벨트 5 엘리시아JS갤로그로 이동합니다. 06:54 22 0
2767115 프로그래밍 언어는 왜 저작권 로열티를 안받는걸까? [6] 프갤러(14.39) 03:38 94 0
2767114 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 03:34 40 0
2767113 프갤서 겜얘기할때마다 저가이번학기에만든겜올리고싶음 [2] Synoeca갤로그로 이동합니다. 03:19 55 0
2767112 얼마나 나란 인간을 무시해야 중요한 정보도 못 알아차리는 거냐 [4] 나트륨찡갤로그로 이동합니다. 02:58 69 0
2767111 내가 중요한 정보들 알려주는데 무시 일관이네 나트륨찡갤로그로 이동합니다. 02:52 42 0
2767110 어찌저찌 조금씩은 나가고 있지만은 절대적으로 시간이 부족해 [4] ㅆㅇㅆ(124.216) 02:40 71 0
2767109 형들 깨진폰 화면 안보이는거 pc연결해서 볼수잇음? [1] 프갤러(106.101) 02:35 28 0
2767108 자고 일나서 노가다 갈 준비나 혀야지 [14] ㅆㅇㅆ(124.216) 02:31 67 0
2767107 클로드 gpt(o1-pr) 비교해보면 [2] 끼부렸어갤로그로 이동합니다. 02:26 56 0
2767106 내가 딱 인터넷 민도 하나 확실하게 할 수 있는건 중국인보다 한국인이 [6] ㅆㅇㅆ(124.216) 02:24 60 0
2767105 프로그래밍 스킬 올리는데 한국 커뮤니티는 진짜 개좆도 쓸모없다 [5] ㅆㅇㅆ(124.216) 02:20 75 0
2767104 30명 이하 회사 개발자로 취업하면 안좋은점 있음? [1] 프갤러(39.119) 02:14 31 0
2767103 36만원짜리 고급 헤드폰 구매하면 효율이 증가할까? [3] 프갤러(14.39) 02:12 35 0
2767102 원래 해외 인디 개발쪽 디코 처음 들어갔을땐 선생님들이 존나 가르쳐줬는데 [10] ㅆㅇㅆ(124.216) 02:08 73 0
2767101 뭐더라 [1] ◕‿◕갤로그로 이동합니다. 02:07 30 0
2767100 젠지 져서 앞으로 다시는 롤 안보기로 했다 [2] 노력갤로그로 이동합니다. 02:00 32 0
2767099 800줄로 시마이다. [1] ㅆㅇㅆ(124.216) 01:56 28 0
2767095 php로는 SPA 구현이 불가능하나요? [2] ㅇㅇ갤로그로 이동합니다. 01:35 50 0
2767094 UC버클리 온라인 석사 학위받고 박사지원가능한가요 (118.235) 01:35 21 0
2767093 롤 화력이 얼마나 센거야 [1] 프갤러(58.237) 01:24 38 0
2767092 NeckDoria 방 근황 [2] 넥도리아갤로그로 이동합니다. 01:20 55 0
2767091 부업으로 할만한거 뭐있음? 프갤러(210.57) 01:18 17 0
2767090 뭘 봐도 뭘 해도 아무것도 느껴지지가 않아. [3] ㅇㅇ(223.38) 01:12 29 0
2767089 si 파견 회사 면접 급급 댓글 부탁 [18] 프갤러(39.119) 01:12 118 0
2767088 프갤 망했냐? 김대기갤로그로 이동합니다. 01:10 30 0
2767087 10인 규모 si인데 힘들어도 버텨야겠지? [8] 프갤러(222.104) 01:02 74 0
2767086 와이어샤크에서 TCP패킷이 쪼개져서 오는거 사이즈는 누가 정하는거야? [5] 1.602갤로그로 이동합니다. 00:51 66 0
2767085 node나 해라 [2] 프갤러(61.75) 00:47 43 0
2767084 음기 충전 발명도둑잡기갤로그로 이동합니다. 00:42 21 0
2767082 그동안 일본에서 개발자 하며 느낀 점 정리 [4] 프로외노자갤로그로 이동합니다. 00:27 121 1
2767081 고기 먹고 싶다.. [4] cvs.갤로그로 이동합니다. 00:26 28 0
2767080 이진아-Goodbye spring(필요없는 봄날씨) 발명도둑잡기갤로그로 이동합니다. 00:25 14 0
2767079 자바는 사실상 오라클로부터 방치된게 맞는듯 [1] 헬마스터갤로그로 이동합니다. 00:24 41 0
2767078 자프링은 왜 욕하는거야? [1] ㅇㅇ(118.235) 00:20 54 0
2767077 우마! [1] 주갤공명(211.234) 00:12 32 0
2767076 정처기갤 모바일 차단ㅋㅋㅋ [10] 프갤러(203.229) 00:11 68 0
2767075 저는 개발자가 아닌 작가를 했어야 합니다 [1] 프로외노자갤로그로 이동합니다. 00:11 38 0
2767074 2024에 자바 async, await없는거 레전드네 [9] 헬마스터갤로그로 이동합니다. 00:08 95 0
2767072 중국산 웹게임에 재미를 느끼는데 어떠캄 ㅇㅅㅇㅋ [1] 나트륨찡갤로그로 이동합니다. 00:07 44 0
2767071 ㅅㅂ 잠 안온가 [2] ♥냥덩이♥갤로그로 이동합니다. 00:02 45 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2