분류 전체보기(113)
-
[Algorithm] Subset(부분집합) 구하기
재귀함수를 이용하여 부분집합을 구하는 방법이다. #include #include using namespace std; vector subset; void search(int k, int n) { vector::iterator it; if (k == n + 1) { for (it = subset.begin(); it != subset.end(); it++) { cout
2023.03.12 -
[TopCoder] InfiniteSequence2(무한 수열)
다음과 같이 정의된 무한 수열 A를 생각해 보자: Ai = 모든 i에 대해 1 = 1에 대해 Ai p A[i/p]-x + A[i/q]-y, 여기서 [x]는 x의 바닥 함수를 나타낸다(참고 참조) n, p, q, x, y가 주어집니다. A의 n번째 요소(인덱스는 0 기반)를 반환합니다. Definition Class: InfiniteSequence2 Method: calc Parameters: long long, int, int, int, int Returns: long long Method signature: long long calc(long long n, int p, int q, int x, int y) (be sure your method is public) Examples 0) 10000000 2..
2023.03.06 -
[TopCoder] CutSticks (막대들 자르기)
존은 다양한 길이의 막대기를 가지고 있다. 각 요소가 하나의 막대의 길이인 막대가 주어집니다. 그는 C번의 컷을 수행한다. 각각의 컷에서, 그는 그의 스틱 중 하나를 선택하고 그것을 임의의 양의 길이를 가진 정확히 두 개의 스틱으로 나눈다. 그 다음에 컷을 할 때 각각의 스틱을 다시 선택할 수 있습니다. 컷을 모두 소화한 뒤 길이순으로 스틱을 분류해 K번째(1-based) 스틱을 선택한다. 선택한 스틱의 최대 길이를 반환합니다. K개 이상의 스틱으로 끝나려면 최소한 필요한 만큼의 컷을 수행해야 합니다. Definition Class: CutSticks Method: maxKth Parameters: vector , int, int Returns: double Method signature: double ..
2023.03.05 -
[TopCoder] NotTwo(2은 아냐)
Bob은 너비 x 높이의 직사각형 보드를 1 x 1 셀로 나눈다. 보드의 행 번호는 0부터 높이-1까지이고 열 번호는 0부터 너비-1까지입니다. 각 셀은 최대 하나의 스톤을 포함할 수 있으며, 각 스톤 쌍 사이의 유클리드 거리는 2가 아니어야 한다. x1 행의 셀, y1 열과 x2 행의 셀, y2 열 사이의 유클리드 거리는 (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2)로부터의 제곱근으로 정의된다. 그가 칠판에 놓을 수 있는 최대 스톤 수를 반환하십시오. Definition Class: NotTwo Method: maxStones Parameters: int, int Returns: int Method signature: int maxStones(int width, int height..
2023.03.05 -
[TopCoder] CantorDust (칸토어 분진)
칸토어 더스트는 다음과 같은 방식으로 구성된 2차원 프랙탈이다. 처음에 프랙탈은 검은 사각형이다. 각 반복에서 프랙탈의 각 사각형은 동일한 부분 제곱의 3x3 서브 그리드로 분할된다. 하위 그리드의 가운데 행 또는 가운데 열(또는 둘 다)에 속하는 검은색 하위 사각형은 흰색으로 칠합니다. 검은색과 흰색 사각형의 직사각형 패턴(각각 'X' 및 '.' 문자로 표시됨)을 나타내는 패턴이 제공됩니다. 반복 시 칸토어 분진에서 이 패턴의 발생 횟수를 반환합니다. 중복 항목이 허용됩니다. Definition Class: CantorDust Method: occurrencesNumber Parameters: vector , int Returns: int Method signature: int occurrencesNu..
2023.03.05 -
[TopCoder] HamiltonPath (해밀턴 패스)
한 나라에는 N개의 도시가 있으며, 0에서 N-1까지 번호가 매겨져 있다. 각각의 도시 쌍은 양방향 도로로 연결되어 있다. 존은 다음과 같은 규칙을 사용하여 전국을 여행할 계획입니다: 그는 정확히 N-1 도로를 여행한 후 한 도시에서 시작해서 다른 도시에서 끝나야 한다. 그는 각 도시를 정확히 한 번 방문해야 한다. 도로가 주어졌습니다. 도로의 i번째 요소의 j번째 문자가 'Y'라면, 그는 city i와 city j를 연결하는 도로를 여행해야 한다. 예를 들어, 3개의 도시가 있고 0과 1 사이의 도로를 이동하려는 경우 0->1->2, 1->0->2, 2->0->1->1->0의 네 가지 경로가 가능합니다. 0->2->1번과 1->2->0번 경로는 그가 0시와 1시 사이의 도로를 이동할 수 없게 하기 때문..
2023.03.01