的:pair <int, int> approach[1 << 18][17]
我不知道什麼是該聲明的含義是:方法[1 < < 18] [17] ;
任何人都可以幫忙嗎? thnks提前
的:pair <int, int> approach[1 << 18][17]
我不知道什麼是該聲明的含義是:方法[1 < < 18] [17] ;
任何人都可以幫忙嗎? thnks提前
在這種情況下,<<
是左移位運算符。 1 << 18
表示採用1
的二進制表示並將其左移18位。這是2 (2表示電源18或262144
)。所以,你必須對一個非常大的二維數組:
pair <int, int> approach[262144][17];
<<
是位左移運算符。
所以1 << 18
是一個整數常量值爲2 。
它只是意味着2^18,2至18
代碼缺少一些解釋的權力,只有真正的好信息是
// SGU 502 -- Digits Permutation
阿其對數字的排列,所以
pair <int, int> approach[1 << 18][17]
可能被用來存儲排列,除非排列上有一些限制,排列的數量應該是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");