Beautiful Arrangement--深度搜索--leetcode
来源:互联网 发布:无限恐怖网络剧 编辑:程序博客网 时间:2024/06/05 09:33
题意:给一串数,1-N,也就是数组arr[N] (N<=15)
对这串数进行排列,要求给出满足以下要求的排列:
arr[i] 能整除 i 或者 i 能整除 arr[i],即arr[i]和arr[arr[i]]相互交换也满足这个条件。
用到算法:深度搜索算法(深度优先遍历),利用递归穷举所有可能情况。找出能和s交换的点,设为已读后再继续找能和s-1交换的点,如此继续下去。
public class BeautifulArrangement { int N; boolean[] visited; int count = 0; public int countArrangement(int N) { this.N = N; visited = new boolean[N + 1]; // 递归总是从最大的数开始,从N开始判断 // 对尚未访问的点N调用dfs dfs(N); return count; } void dfs(int s) { if (s == 0) { count++; return; } for (int v = 1; v <= N; v++) { // 已经访问过的点不再访问 if (!visited[v]) { if (s % v == 0 || v % s == 0) { visited[v] = true; dfs(s - 1); visited[v] = false; } } } }}
0 0
- Beautiful Arrangement--深度搜索--leetcode
- Leetcode Beautiful Arrangement
- LeetCode 526. Beautiful Arrangement
- 【Leetcode】526. Beautiful Arrangement
- [LeetCode]526. Beautiful Arrangement
- 【LeetCode】526. Beautiful Arrangement
- Leetcode 526 Beautiful Arrangement
- leetcode 526. Beautiful Arrangement
- Leetcode: 526. Beautiful Arrangement
- LeetCode 526 Beautiful Arrangement
- [LeetCode] 526. Beautiful Arrangement
- [LeetCode]526. Beautiful Arrangement
- leetcode- Beautiful Arrangement II
- [LeetCode] 526. Beautiful Arrangement
- LeetCode:526. Beautiful Arrangement
- leetcode练习 Beautiful Arrangement
- [leetcode] 526. Beautiful Arrangement
- leetCode-Beautiful Arrangement II
- 利用html5调用本地摄像头拍照上传图片
- Java几种集合的遍历方法
- java中的sleep()和wait()的区别
- new 操作符和 new 操作的区别
- Hadoop1.x学习笔记
- Beautiful Arrangement--深度搜索--leetcode
- machine learning
- python 模块使用例子
- 动态规划求解
- Android权限大全
- C++ 向上与向下类型转换
- Java 后端实战——基于 MySQL 的 SQL 优化最佳实践
- iOS开发技巧之:获取ios相册gif图片 原数据
- game游戏学习网站