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:

  1. The number at the ith position is divisible by i.
  2. 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:

  1. N is a positive integer and will not exceed 15.

Approach #1: backtracking. [C++]

class Solution {
public:
int countArrangement(int N) {
vector<int> path; for (int i = 1; i <= N; ++i)
path.push_back(i); return helper(N, path);
} private:
int helper(int n, vector<int> path) {
if (n <= 0) return 1;
int ans = 0;
for (int i = 0; i < n; ++i) {
if (path[i] % n == 0 || n % path[i] == 0) {
swap(path[i], path[n-1]);
ans += helper(n-1, path);
swap(path[i], path[n-1]);
}
}
return ans;
}
};

  

最新文章

  1. Android Studio的SVN Performing VCS Refresh/Commit 长时间不结束
  2. 解决Python中不能输入汉字的问题
  3. Mifare系列6-射频卡与读写器的通信(转)
  4. scala变量
  5. MongoDB安装部署(一)
  6. SQLite详解
  7. js 逻辑运算符优化
  8. 爬虫 BeatifulSoup 模块
  9. centos7基于SVN+Apache+IF.svnadmin实现SVN的web管理
  10. eclipse php pdt插件安装
  11. .net 服务端 访问共享文件夹
  12. Stm32 资料
  13. TensorFlow 实现 RNN 入门教程
  14. 极限编程核心价值:沟通(Communication)
  15. 21天实战caffe笔记_第三天
  16. DevExpress中Tile Application窗体的模型架构图
  17. 十一、springcloud之链路追踪Sleuth
  18. makfile.am 和makefile.in 的使用
  19. (转)Opencv卷积操作
  20. FFT(快速傅里叶变换)

热门文章

  1. C#中的goto
  2. 在java中导出excel
  3. re模块之re.match
  4. FastDFS 分布式文件系统
  5. ZPP002M可重复执行
  6. JavaScript怎么让字符串和JSON相互转化
  7. solr的客户端操作:使用solrj进行curd操作
  8. 钉钉开发笔记(5)android系统中html软键盘的适配
  9. Python简单邮件发送源码
  10. Python的内建比较函数cmp比较原理剖析-乾颐堂