演算法實踐 leetcode526 優美的排列

2021-10-05 23:45:50 字數 1150 閱讀 4042

假設有從 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 整除

說明:

n是乙個正整數,並且不會超過15。

回溯演算法,套用模板

result = 

def backtrack(路徑, 選擇列表):

if 滿足結束條件:

result.add(路徑)

return

for 選擇 in 選擇列表:

做選擇backtrack(路徑, 選擇列表)

撤銷選擇

class

solution

void

bactrace

(int

* b,

bool

* visited,

int cell)

for(

int i=

1;i<=num;i++

) b[cell]=0

; visited[i]

=false;}

}}};

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,請問可以構造多少個優美的排列?輸入 2輸出 2解釋 第 1 ...

Leetcode 526 優美的排列

假設有從 1 到 n 的n個整數,如果從這n個數字中成功構造出乙個陣列,使得陣列的第i位 1 i n 滿足如下兩個條件中的乙個,我們就稱這個陣列為乙個優美的排列。條件 第i位的數字能被i整除 i能被第i位上的數字整除 現在給定乙個整數 n,請問可以構造多少個優美的排列?示例1 輸入 2 輸出 2 解...