Q
광고가 배열
0
A
답변
3
이 문맥에서 <<
은 비트 왼쪽 시프트 연산자입니다. 1 << 18
은 1
의 이진 표현을 취하고이를 18로 왼쪽으로 시프트 함을 의미합니다. 이것은 2 (2의 거듭 제곱 또는 262144
)입니다. 그래서 당신은 쌍의 매우 큰 2 차원 배열이 : 그것은 단순히 18
코드는 약간의 설명이 누락의 힘에 2^18, 2를 의미
pair <int, int> approach[262144][17];
2
<<
은 비트 왼쪽 시프트 연산자입니다.
따라서 1 << 18
은 2 의 값을 갖는 정수 상수입니다.
1
을, 유일한 진짜 좋은 정보는
입니다 그래서pair <int, int> approach[1 << 18][17]
순열을 저장하는 데 사용될 수있는 자리 치환에 대한
// SGU 502 -- Digits Permutation
아의, 순열에 대한 제한이 없다면 순열의 양은 N이어야합니다. (바라건대 N! < = (1 < < 18)).
그러나 그 정의는 그것에 대해 아무 것도 말하지 않으며, 우리가 그것을 더 명확하게 (잘하면 바르게) 만들 수 있는지 보도록합니다.
const int maxLength = 17;
const int maxPermutation = 1 << (maxLength+1);
pair <int, int> approach[maxPermutation ][maxLength]
static_assert(factorial(maxLength) <= maxPermutation, "approach might not be able to hold all permutations");