Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp đẹp mắt của các con số trong JavaScript

Sắp xếp đẹp mắt:

Giả sử chúng ta có num số nguyên từ 1 đến num. Chúng tôi xác định một sự sắp xếp đẹp mắt dưới dạng một mảng được tạo bởi các số num này thành công nếu một trong những điều sau đây đúng với vị trí thứ i (1 ≤ i ≤ N) trong mảng này -

  • Số ở vị trí thứ i chia hết cho số i.

  • i chia hết cho số ở vị trí thứ i.

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận vào một số, num và trả về số lượng các sắp xếp đẹp mà chúng tôi có thể tạo cho num.

Ví dụ:nếu đầu vào của hàm là -

const input = 2

Sau đó, đầu ra phải là -

const output = 2

Giải thích đầu ra

Cách sắp xếp đẹp mắt đầu tiên là [1,2]:

Cách sắp xếp đẹp thứ hai là [2,1]:

Ví dụ

Mã cho điều này sẽ là -

const num = 4;
const countArrangements = (num = 1) => {
   let ans = 0
   const recur = (curr, vis) => {
      if (curr === 1){
         ans++;
      }else{
         for (let i = num; i; i--) {
            let possible = (i % curr === 0 || curr % i === 0);
            let visited = vis & 1 << i;
            if (possible && !visited){
               recur(curr-1, vis | 1 << i);
            }
         }
      }
   };
   recur(num, 0);
   return ans;
};
console.log(countArrangements(num));

Giải thích mã:

Chúng tôi xác định một biến kết quả ( ans ) và sau đó tạo một hàm đệ quy để điều hướng nhiều khả năng phân nhánh. Hàm đệ quy này sẽ chỉ cần hai đối số:số nào hiện tại chúng ta đang muốn đặt (curr) và vị trí nào đã được truy cập (vis).

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

8