leetcode526
public class Solution {
//回溯法
//根据回溯的思路,同样,可以对本题的Beautiful排列实现。
//比如,当N为5时,使用回溯算法先是得到(1,2,3,4,5)排列,符合要求,符合要求的排列数count+1,
//接着回溯到第四个位置,在剩下的选择中选5,但发现5不符合要求,然后跳过,不再往后判断。
//同样当得到(1,2,5)这前三个排列时,5已经不符合要求,也不会再往后判断(1,2,5,x,x)。
//这样减少了直接穷举递归方法中很多不需要判断操作,提高了效率。
int count = ;
public int CountArrangement(int N)
{
if (N == ) return ;
helper(N, , new int[N + ]);
return count;
}
//具体来说,计算Beautiful排列的数量,可把长度为N的排列的位置看成结点,
//建立一个辅助类来记录所遍历结点的位置及在该位置符合要求的值,
//当结点的位置超过N长度则认为完成了一次Beautiful排列。
private void helper(int N, int pos, int[] used)
{
if (pos > N)
{
count++;
return;
}
for (int i = ; i <= N; i++)
{
if (used[i] == && (i % pos == || pos % i == ))
{
used[i] = ;
helper(N, pos + , used);
used[i] = ;
}
}
}
}
https://leetcode.com/problems/beautiful-arrangement/#/description
leetcode526的更多相关文章
- [Swift]LeetCode526. 优美的排列 | Beautiful Arrangement
Suppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is const ...
随机推荐
- Linux下iptables介绍
ptables简介 iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表. filter负责过滤数据包,包括的规则链有,input,outp ...
- 新手向——关于Python3.5在Windows 10 系统下发布模块的终极讲解
博主自己在发布Python模块的时候也是摸索了好久啊,因为跟着书上写的步骤一步一步来终究会跪的节奏有木有啊!!!几经波折终于搞出来了,贴下来与诸君共勉.之前的步骤相信大家都已经知道了,那我们就直接跳过 ...
- FreeMarker自定义TemplateDirectiveModel
[参考:http://blog.csdn.net/fangzhangsc2006/article/details/8687371] 在采用FreeMarker做前台视图模板的情况下,我们可以通过< ...
- Uoj 129 寿司晚宴
Uoj 129 寿司晚宴 显然合法性只与每个数所含的质因子有关,考虑状压 \(dp\) 若记录所有质因子状态显然爆炸,注意到每个数最多有一个超过 \(\sqrt 500\) 的大质因子,而其他的小质因 ...
- WPF 和 UWP 中,不用设置 From 或 To,Storyboard 即拥有更灵活的动画控制
无论是 WPF 还是 UWP 开发,如果用 Storyboard 和 Animation 做动画,我们多数时候都会设置 From 和 To 属性,用于从起始值动画到目标值.然而动画并不总是可以静态地指 ...
- P2P UPD打洞原理
转自:http://blog.pfan.cn/fengfei/18828.html 首先先介绍一些基本概念: NAT(Network Address Tr ...
- 《DSP using MATLAB》示例Example 8.22
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- SQL 中nvarchar和varchar到底能存多少汉字和英文
实践出真知,在SQL中,nvarchar(50)表示汉字和英文都是50,varchar(50)汉字25,英文50
- http接口测试工具
2016-08-28 19:24:55 以全国天气预报为例 https://www.juhe.cn/docs/api/id/39/aid/132 (一)火狐的HttpRequester 在URL中填 ...
- Eclipse 创建类时添加继承
eclipse 中类的继承创建有两种方式: 1.手动敲代码通过 extends 关键字来继承 public class A extends B { } 2.在创建类的时候就选择好继承关系 点击 Fin ...