• [leetcode-526-Beautiful Arrangement]


    Suppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is constructed by these N numbers successfully
    if one of the following is true for the ith position (1 ≤ i ≤ N) in this array:
    The number at the ith position is divisible by i.
    i is divisible by the number at the ith position.
    Now given N, how many beautiful arrangements can you construct?
    Example 1:
    Input: 2
    Output: 2
    Explanation:
    The first beautiful arrangement is [1, 2]:
    Number at the 1st position (i=1) is 1, and 1 is divisible by i (i=1).
    Number at the 2nd position (i=2) is 2, and 2 is divisible by i (i=2).
    The second beautiful arrangement is [2, 1]:
    Number at the 1st position (i=1) is 2, and 2 is divisible by i (i=1).
    Number at the 2nd position (i=2) is 1, and i (i=2) is divisible by 1.
    Note:
    N is a positive integer and will not exceed 15.

    思路:

    回溯法。。。

    int counts(int n,vector<int>& intvec)
         {
             if (n <= 0) return 1;
             int res = 0;
             for (int i = 0; i < n;i++)
             {
                 if (intvec[i]%n ==0 || n %intvec[i] ==0)
                 {
                     swap(intvec[i], intvec[n - 1]);
                     res += counts(n - 1, intvec);
                     swap(intvec[i], intvec[n - 1]);
                 }
             }
             return res;
         }
         int countArrangement(int N)
         {
             vector<int> intvec;
             for (int i = 0; i < N; i++)intvec.push_back(i + 1);
             return counts(N, intvec);         
         }

    参考:

    https://discuss.leetcode.com/topic/79921/my-c-elegant-solution-with-back-tracking

  • 相关阅读:
    优化webstorm打开项目速度
    组件 -- Button
    组件 --BreadCrumb--面包屑
    组件 -- Badge
    组件 -- Alert
    表格-table 样式
    image 样式设置
    文本和字体样式设置
    bootstrap-网格系统
    c#方法
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/6899941.html
Copyright © 2020-2023  润新知