当前位置: 首页 > news >正文

陕西省住房和建设厅官方网站如果网站打开非常缓慢

陕西省住房和建设厅官方网站,如果网站打开非常缓慢,营销活动方案策划,wordpress ajax 接口3470.全排列IV 难度:困难 问题描述: 给你两个整数n和k,一个交替排列是前n个正整数的排列,且任意相邻两个元素不都为奇数或都为偶数。 返回第k个交替排列,并按字典序排序。如果有效的交替排列少于k个,则…

3470.全排列IV

难度:困难

问题描述:

给你两个整数n和k,一个交替排列是前n个正整数的排列,且任意相邻两个元素不都为奇数或都为偶数。

返回第k个交替排列,并按字典序排序。如果有效的交替排列少于k个,则返回一个空列表。

示例1

输入:n=4,k=6

输出:[3,4,1,2]

解释:

[1,2,3,4]的交替排列按字典序排序后为:

[1,2,3,4]

[1,4,3,2]

[2,1,4,3]

[2,3,4,1]

[3,2,1,4]

[3,4,1,2]←第6个排列

[4,1,2,3]

[4,3,2,1]

由于k=6,我们返回[3,4,1,2]。

示例2

输入:n=3,k=2

输出:[3,2,1]

解释:

[1,2,3]的交替排列按字典序排序后为:

[1,2,3]

[3,2,1]←第2个排列

由于k=2,我们返回[3,2,1]。

示例3

输入:n=2,k=3

输出:[]

解释:

[1,2]的交替排列按字典序排序后为:

[1,2]

[2,1]

只有2个交替排列,但k=3超出了范围。因此,我们返回一个空列表[]。

提示:

1<=n<=100

1<=k<=1015

分析问题:

这个问题关键是要先把1至n共n个数的全排列找出来,然后根据“任意相邻两个元素不都为奇数或都为偶数”的规则生成交替排列,并按字典序排好序,剩下的输出第k个排列就好办了。生成全排列又用到了递归的方法。

程序如下:

#将一个整数插入到一个整数列表中的各个位置,形成一个新的全排列并返回
def one_into_all(a,b):n=len(b)c=[]for i in range(n+1):left=b[:i]right=b[i:]d=left+[a]+rightc.append(d)return c#生成列表a的全排列,并返回
def all_array(a):n=len(a)if n==2:return[[a[0],a[1]],[a[1],a[0]]]elif n==3:return [[a[0],a[1],a[2]],[a[0],a[2],a[1]],[a[1],a[0],a[2]],[a[1],a[2],a[0]],[a[2],a[0],a[1]],[a[2],a[1],a[0]]]else:c=[]b=a[0]for i in all_array(a[1:]):d=one_into_all(b,i)c.extend(d)c.sort()return c#检查一个列表中相邻两个整数是否都为奇数或都为偶数,如果是返回True,否则返回False
def is_odd_or_even(a):n=len(a)for i in range(n-1):if a[i]%2==0 and a[i+1]%2==0 or a[i]%2==1 and a[i+1]%2==1:return Trueelse:return False#主程序之输入部分
n=int(input('pls input n='))
k=int(input('pls input k='))
#根据输入的n值,生成元素为1至n的列表
a=list(range(1,n+1))#从1至n的全排列中去除相邻元素都为奇数或都为偶数的排列,生成交替排列
b=[]
for i in all_array(a):if is_odd_or_even(i):continueelse:b.append(i)#根据k的值,输出第k个排列或输出空列表
n=len(b)
if k<=n:print(f'生成的交替排列中的第{k}个排列为:{b[k-1]}')
else:print([])#将交替排列按一行四个排列的格式输出
k=0
print('生成的交替排列按每行4个元素排列如下:',end=' ')
for i in b:if k%4!=0:print(i,end=' ')else:print()print(i,end=' ')k=k+1

运行实例一

pls input n=4

pls input k=3

生成的交替排列中的第3个排列为:[2, 1, 4, 3]

生成的交替排列按每行4个元素排列如下:

[1, 2, 3, 4] [1, 4, 3, 2] [2, 1, 4, 3] [2, 3, 4, 1]

[3, 2, 1, 4] [3, 4, 1, 2] [4, 1, 2, 3] [4, 3, 2, 1]

运行实例二

pls input n=3

pls input k=2

生成的交替排列中的第2个排列为:[3, 2, 1]

生成的交替排列按每行4个元素排列如下:

[1, 2, 3] [3, 2, 1]

运行实例三

pls input n=2

pls input k=3

生成的交替排列中没有第3个排列,故输出[]

生成的交替排列按每行4个元素排列如下:

[1, 2] [2, 1]

全排列是解决很多问题的关键,探究生成全排列的各种方法应该是必要的。

http://www.yayakq.cn/news/359339/

相关文章:

  • 怎么用手机做网站平台郑州市中标公示网
  • vue网站开发要怎样做网站发到百度上面
  • 懂得做网站还可以做什么兼职我想在阿里巴巴网站开店_怎么做
  • 如何做推广麦当劳的网站html代码基础
  • 温州网站建设成都公司的网站制作
  • 建设网站需要哪些设备学建筑的网站
  • 做购物网站之前做些什么百度推广介绍
  • 公司网站建设制作全包上海定制网站开发
  • 网站做几级等保宁波建设信息网
  • 银川网站开发公司电话哪些网站是营销型网站及原因
  • 盐城网站建设公司网站建设初期 该如何推广
  • 建设银行成都市第九支行 网站工商局官网登录入口
  • 做网站开发用笔记本要什么配置一般使用的分辨率显示密度是多少?
  • 大理公司网站建设阿里云搭建wordpress
  • 钟表网站开发背景文章东莞市新冠最新消息
  • 建设银行甘肃省分行网站wordpress 换域名插件
  • iis 浏览网站wordpress添加dplayer
  • 四川省示范校建设网站网页设计与网站建设教学视频
  • 垂直网站建设方案书网站建设多少预算
  • 西安做网站商城的公司湖北网
  • 成都网站设计排名的公司价格滁州网站建设hi444
  • 自己做剧本网站wordpress+视差模板
  • 河南网站建设价位国家高新技术企业牌子
  • 如何用phpstorm做网站石家庄建站优化公司
  • 网站开发技术部分装修公司网站源码
  • diy在线定制网站系统网站建设c云世家宋南南
  • 网站产品展示赚钱平台
  • 自己做付费网站江苏恒健建设集团有限公司网站
  • 网站后台编辑框不显示网站设计师对应的专业
  • 龙岗模板网站建设红桥集团网站建设