假設有從 1 到 n 的n個整數,如果從這n個數字中成功構造出乙個陣列,使得陣列的第i位 (1 <= i <= n) 滿足如下兩個條件中的乙個,我們就稱這個陣列為乙個優美的排列。條件:第i位的數字能被i整除
i能被第i位上的數字整除
現在給定乙個整數 n,請問可以構造多少個優美的排列?
輸入:2輸出:2解釋:第 1 個優美的排列是 [1, 2]:第 1 個位置(i=1)上的數字是1,1能被 i(i=1)整除
第 2 個位置(i=2)上的數字是2,2能被 i(i=2)整除
第 2 個優美的排列是 [2, 1]:
第 1 個位置(i=1)上的數字是2,2能被 i(i=1)整除
第 2 個位置(i=2)上的數字是1,i(i=2)能被 1 整除
回溯法:根據題設要求,將1~n按下標遞增的順序填數,填滿乙個就說明找到乙個優美的陣列
python
class solution:
def countarrangement(self, n: int) -> int:
vis = [0] * (n + 1)
ans = 0
def _dfs(index):
nonlocal ans, vis
if index == n + 1:
ans += 1
return
for i in range(1, n + 1):
if not vis[i] and (i % index == 0 or index % i == 0):
vis[i] = 1
_dfs(index + 1)
vis[i] = 0;
_dfs(1)
return ans
c++
class solution
void _dfs(vector& vis, int &ans, int index, int n)}}
return ;
}};
LeetCode526 優美的排列
題目 假設有從 1 到 n 的n個整數,如果從這n個數字中成功構造出乙個陣列,使得陣列的第i位 1 i n 滿足如下兩個條件中的乙個,我們就稱這個陣列為乙個優美的排列。條件 第i位的數字能被i整除 i能被第i位上的數字整除 現在給定乙個整數 n,請問可以構造多少個優美的排列?示例1 輸入 2輸出 2...
Leetcode 526 優美的排列
假設有從 1 到 n 的n個整數,如果從這n個數字中成功構造出乙個陣列,使得陣列的第i位 1 i n 滿足如下兩個條件中的乙個,我們就稱這個陣列為乙個優美的排列。條件 第i位的數字能被i整除 i能被第i位上的數字整除 現在給定乙個整數 n,請問可以構造多少個優美的排列?示例1 輸入 2 輸出 2 解...
LeetCode 526 優美的排列
假設有從 1 到 n 的 n 個整數,如果從這 n 個數字中成功構造出乙個陣列,使得陣列的第 i 位 1 i n 滿足如下兩個條件中的乙個,我們就稱這個陣列為乙個優美的排列。條件 第 i 位的數字能被 i 整除 i 能被第 i 位上的數字整除 現在給定乙個整數 n,請問可以構造多少個優美的排列?示例...