dfs반환값으로 컴포넌트의 크기를 반환하도록 하세요. a를 루트로 DFS스패닝 트리를 만든다고 하면 일단 자기 자신의 크기가 있으니 크기가 1이고 거기에다 재귀호출하면서 반환된 값들을 누적시켜서 더해주면 됩니다. 그러면 a가 속한 컴포넌트의 전체 크기를 알 수 있죠. 그리고 방문했던 칸은 방문여부를 체크해둬서 중복으로 방문하지 않도록 해야합니다. 이전 작성글에 제가 단 댓글 있는데 보고 참고하시기 바랍니다.
암시적 그래프에서 컴포넌트 갯수와 각 컴포넌트의 크기를 구하는 문제네요. 전에 풀었던 문제중 유사한 문제가 있어서 링크랑 해당 문제 풀이 소스 올려드립니다. 참고하세요. https://www.acmicpc.net/problem/2667 #include<cstdio> #include<set> using namespace std; int n; bool map[25][25], visit[25][25]; int dfs(int y, int x) { if (!map[y][x] || visit[y][x]) return 0; visit[y][x] = true; int ret = 1; if (y) ret += dfs(y - 1, x); if (x) ret += dfs(y, x - 1); if (y != n - 1) ret += dfs(y + 1, x); if (x != n - 1) ret += dfs(y, x + 1); return ret; } int main() { multiset<int> s; scanf("%d", &n); getchar(); for (int i = 0; i != n; ++i) { for (int j = 0; j != n; ++j) map[i][j] = getchar() - '0'; getchar(); } for (int i = 0; i != n; ++i) { for (int j = 0; j != n; ++j) { int x = dfs(i, j); if (x) s.insert(x); } } printf("%dn", s.size()); for (auto iter : s) printf("%dn", iter); }
저같으면 이혼합니다. 아내분이 작성자분을 게임중독자 취급을 하는 것은 제가 봤을땐 위선 행위입니다. 실제로는 게임 자체에 대해서 마약 수준으로 안좋게 생각하는 편견을 가지고 있으면서 그러한 편견이 스스로도 옳지 않다고 느끼기에 게임 하는 것 자체를 문제 삼지 않고 게임 중독자로 몰아가는 것으로 보여요. 이 정도 편견이면 대화로 사라질 수준이 아닌것 같습니다.
저는 이분 의견에 동의합니다. 이미지나 동영상 따위도 충분한 시간을 들여 학습시키면 인식하고 해석할 수 있습니다. 딥러닝을 이용해 가장 먼저 산업에 적용된 예도 이미지를 인식하는 것으로 알고 있고요. 적어도 실물 사진따위에서는 이미 인간의 인식률을 넘어섰습니다. 딥러닝이라는 것 자체가 기존의 알고리즘처럼 어떤 문제에 대한 논리적인 해결 방법을 프로그래밍하는게 아니라 충분한 데이터를 통해 스스로 학습하도록 하는 것입니다. 인간이 학습하는 것과 유사하죠. 인간보다 학습 성취율은 떨어지더라도 인간보다 훨씬 많은 케이스를 학습할 수 있습니다. 조악한 그림이라도 계속 학습시키면 인식하지 못 할 이유가 없습니다. 물론 실제로는 데이터베이스를 기반으로 적절한 답을 선택하는 것일 뿐이지만 결과적으로 보면 내용을 이해하고 답을 내는 것이나 다름이 없습니다.
우주가 그렇게 생겨먹었으니까요. 사실 계속 파고 들어가면 결국 '이건 어떻게 그리고 왜 존재하는가?' 에 대한 답을 구할 수 없는 것이 나올 겁니다. 그냥 원래 세상이 그런 것이라고 납득하는 수 밖에 없죠. 다만 현대과학에서 분류한 네 가지 초힘을 하나의 근원으로 합치려는 시도는 아인슈타인 이래로 계속되어 고 있습니다.
안타깝게도 c++ 표준 라이브러리에는 아직 그래픽이나 통신 관련 라이브러리가 없습니다. 다른분들 의견처럼 윈도우API를 이용하면 구현할 수 있습니다만 사용하기가 번거럽고 인터페이스가 친절하지 않죠. MFC같은 프레임워크를 이용하는것도 한 방법이 될 수 있겠지만 이 또한 학습오버헤드가 상당할 것으로 예상됩니다. 제가 추천드리고 싶은건 boost라이브러리입니다. 오픈소스 서드파티 라이브러리인데 이 라이브러리는 해당 사항들을 포함하고 있습니다. boost 공식 홈페이지에서 라이브러리를 다운받을 수 있을 뿐만 아니라 예제 소스들도 게시되어 있습니다. 참고로 boost라이브러리에서 표준 라이브러리로 넘어간게 꽤 많고 앞으로도 그럴 전망입니다. 게임으로 치면 테스트서버 같은 기능을 하는거죠.
http://www.todayhumor.co.kr/board/view.php?table=humorbest&no=1082827&s_no=1082827&kind=member&page=1&member_kind=humorbest&mn=266650 예전에 제가 썼던 글인데 예를 들어 설명해 놓았으니 한번 읽어보시면 도움이 되실겁니다.