#pragma once
#include <iostream>
#include <set>
class C_MOUNTAIN
{
public:
enum class E_TYPE
{
E_PATH = 0,
E_GATE,
E_SUMMIT,
};
private:
struct S_NODE
{
std::set<int> child;
E_TYPE eType;
};
S_NODE** m_arNode;
int** m_arIntensity;
std::set<int> m_setEnableNode;
private:
S_NODE* createNode(int nId);
void move(int nParent, int nId);
public:
C_MOUNTAIN() = default;
void init(int nSize);
void addPath(int nDst, int nSrc , int nIntensity);
void setType(int nId, E_TYPE eType);
void print();
void run(int nGate);
};
#include "mountain.h"
C_MOUNTAIN::S_NODE* C_MOUNTAIN::createNode(int nId)
{
S_NODE* pNode = new S_NODE{};
pNode->eType = C_MOUNTAIN::E_TYPE::E_PATH;
return pNode;
}
void C_MOUNTAIN::run(int nGate)
{
move(0, nGate);
}
void C_MOUNTAIN::move(int nParent, int nId)
{
if (m_arNode[nId]->eType == E_TYPE::E_GATE)
return;
printf("id : %d , intensity %d\n", nId, m_arIntensity[nId][nParent]);
}
void C_MOUNTAIN::init(int nSize)
{
m_arNode = new S_NODE * [nSize] {};
m_arIntensity = new int* [nSize] {};
for (int i = 0; i < nSize; i++)
{
m_arIntensity[i] = new int[nSize] {};
}
}
void C_MOUNTAIN::addPath(int nDst, int nSrc, int nIntensity)
{
if (!m_arNode[nDst])
m_arNode[nDst] = createNode(nDst);
if (!m_arNode[nSrc])
m_arNode[nSrc] = createNode(nSrc);
m_setEnableNode.insert(nDst);
m_setEnableNode.insert(nSrc);
m_arNode[nDst]->child.insert(nSrc);
m_arNode[nSrc]->child.insert(nDst);
m_arIntensity[nDst][nSrc] = nIntensity;
m_arIntensity[nSrc][nDst] = nIntensity;
}
void C_MOUNTAIN::setType(int nId, E_TYPE eType)
{
m_arNode[nId]->eType = eType;
}
void C_MOUNTAIN::print()
{
for (int nId : m_setEnableNode)
{
printf("%d : ", nId);
for (int nChild : m_arNode[nId]->child)
{
printf("%d " , nChild);
}
printf("\n");
}
}
#include <iostream>
#include "mountain.h"
int main()
{
C_MOUNTAIN cMountain{};
cMountain.init(10);
cMountain.addPath(1, 2, 3);
cMountain.addPath(2, 3, 5);
cMountain.addPath(2, 4, 2);
cMountain.addPath(2, 5, 4);
cMountain.addPath(3, 4, 4);
cMountain.addPath(4, 5, 3);
cMountain.addPath(4, 6, 1);
cMountain.addPath(5, 6, 1);
cMountain.print();
}
'C++' 카테고리의 다른 글
[C++] 5월 2일 코딩 테스트 수업 (0) | 2025.05.02 |
---|---|
[C++] 4월 30일 코딩 테스트 수업 (0) | 2025.04.30 |
[C++] 4월 25일 코딩 테스트 수업 (0) | 2025.04.27 |
[C++] 4월 23일 코딩 테스트 수업 (0) | 2025.04.24 |
[C++] 4월 21일 코딩 테스트 수업 (0) | 2025.04.23 |