很喜欢很喜欢今天的自己 虽然有超多的小朋友 但是感觉自己好像也回到小时候 一点不像大学生 好像才刚刚初中 坐了两次摩天轮真的很浪漫 玩海盗船的时候一个小弟弟喊我姐姐带他的弟弟一起玩 好喜欢这样的小朋友 检票的阿姨还问我几岁 我真的有恍惚一下 差点说十六岁 虽然海盗船不大 在最高点也会有自由落体的感觉 以前害怕的不敢睁开眼只听到我妹妹在一旁猛喊 我完全失声 今天好像在享受 享受自己的害怕和心脏被压迫的感觉 不懂 也许是闷太久了 和jl坐在对面 好好笑 坐之前超大胆的人反而在害怕 超后悔手机放外面了 不然肯定录下来哈哈哈哈哈 唯一伤心的事就是写在备忘录的拍立得还是忘拿了 记录每一刻生活 下次一定拿上 生活要没有烦恼 出发永远是最有意义的事情 明天永远会更更好

遍历排列的一个简洁的程序算法

以前遍历排列都是用数组,再用循环去加减里面的元素,还得排除重复的。程序比较麻烦,显得比较乱。

最近在搞拉丁方需要遍历排列,思考有不有什么比较优雅一点的算法可以直接得到所有需要的排列呢?

想到一个排列计数1-n!到排列的一个一一对应的简洁的程序算法,这样程序就比较优雅了。

n皇后问题的Python代码:

from math import *
def check(x,n):

for i in range(1,n):

for j in range(i):

if abs(x[i]-x[j]) == i-j:

return i

return 0
def queen(n):

allnum=factorial(n)

num=0

x=[0]*n
#

for i in range(allnum):

i=0

while i< allnum:

xx=i

for j in range(n):

yy=factorial(n-1-j)

x[j]=int(xx/yy)

xx=xx%yy

y=list(range(n))

for j in range(n):

x[j]=y.pop(x[j])

j=check(x,n)

if j==0:

num+=1


i+=1

else:

i+=factorial(n-j-1)

print("\r\nn=%d num=%d"%(n,num))
queen(10)

n皇后问题的Julia代码:
#queen.jl
##
# Copyright by yuange 2023.5.30

function check(x,n)
for i in 2:n

for j in 1:i-1

if abs(x[i]-x[j])==(i-j) return i end

end
end
return 0


end

function queen(n)

x=zeros(Int,n)

allnum=factorial(BigInt(n))

num=0


i=0

while i

xx=i

for j in 1:n

yy=factorial(BigInt(n-j))

x[j]=div(xx,yy)

xx=xx%yy

end

y=zeros(Int,n)

y[1:n]=1:n

for j in 1:n

x[j]=popat!(y,x[j]+1)

end


j=check(x,n)


if j==0

num+=1

i+=1

else


i+=factorial(BigInt(n-j))

end

end

print("\r\nn=$n,num=$num\r\n")
end

queen(10)

校验算法结果和以下结果没有问题
N皇后问题解的个数
n

solution(n)
1

1
2

0
3

0
4

2
5

10
6

4
7

40
8

92
9

352
10

724
11

2680
12

14200
13

73712
14

365596
15

2279184
16

14772512
17

95815104
18

666090624
19

4968057848
20

39029188884
21

314666222712
22

2691008701644
23

24233937684440
24

227514171973736
25

2207893435808352

注意Python和Julia等语言for循环里不接受改变循环变量(还是我没找到方法?),可以用while等代替,这是和C语言系的一个比较大的差异。

for j in range(n):

yy=factorial(n-1-j)

x[j]=int(xx/yy)

xx=xx%yy

y=list(range(n))

for j in range(n):

x[j]=y.pop(x[j])

这段代码一重循环就把排列计数0到n!-1的排列计数xx转换成一个0到n-1的排列数组了。程序只要遍历xx就可以,这样程序一看就结构比较简单。

一般这样的问题,代码要不用递归调用要不就用动态的循环管理。递归调用程序结构简单一些,但是递归调用开销大,其实递归调用本质还是等于多重循环。动态循环管理开销小,但是程序写起来有点乱,程序结构不太好。

这个算法直接排列计数和排列一一对应,程序结构就很简洁。唯一不是太好的地方就是后面的转换如果用数组pop操作代码是简洁,但是这种操作是相对比较耗费时间的。这个后面的用数组pop转换看怎么改用自己的比较简洁的代码。
还好如果不是过分需要效率的时候,这算法就算用数组的pop也还算能接受。

因为大量排列是不符合的,可以x[j]第二项生成就开始就检测,这样会减少很多时间。

这文章主要关注点不是在这里。

BGYO 是一个由五人组成的菲律宾男孩团体,于 2018 年由 ABS-CBN Star Hunt Academy 组建,并于 2021 年在 ABS-CBN 的 Star Magic 下亮相。它的成员包括 Gelo、Mikki、Nate、JL 和 Akira。他们的首张歌曲叫做“The Light”

你可以在这里观看:
https://t.cn/A6txybf4

#金泰亨kpop永一##kpop[超话]##kpop##kpop出圈名场面##朴智旻kpop唯一双顶奢男大使##遇见bts遇见更好的自己##bts防弹少年团##bts_dynamite#


发布     👍 0 举报 写留言 🖊   
✋热门推荐
  • 4、餐厅餐厅插花装饰可利用就餐环境优雅、卫生、舒适,食堂的花型应与餐桌协调,花色少、精,应选择色调较淡的花朵或配合一些瓜果类,使餐厅气氛更加和谐,充满生活气息。
  • 去学校电影院看完龙猫,和gg一路外放龙猫bgm慢慢在校园摇回来,路上人也不多了,这几天海口天气还不错啦,像家乡开春时的天气一样。 [泪]以前看过一个把生命变成
  • 内心真正富足的人不会轻易标榜自己优越感就像贴身衣服,你可以穿,但你不能到处秀给别人看,如果你非要秀,结果就是:恶心了别人,还出尽洋相。”看一个人的修养就看他怎么
  • 《我的ID是江南美人》看完,玄秀雅小姐姐是真的好看,穿搭也好美腻,虽然人设很糟糕,开始很讨厌她,最后她悔改又忍不住被触动流眼泪,啊西,真是泪点低,明天眼睛要肿了
  • 【【唯爱又廷】又廷感谢你来到我的生命中,】相遇是春风十里,原来是你,相知是桃花漫漫,最后是你,对你没有理由的迷恋,轻易展现那个最真实的自己,爱是成千上万的相遇,
  • 男主的能力是能让自己和其他人获得平行世界的记忆,然而他在不同世界有不同的男友,当主世界的人获得平行世界的记忆时,不存在的修罗场就出现了…平行世界男友包括并不限于
  • p18 合理猜测一下她额头原来嵌的是明珠 被盗了可‮香可‬奈儿有这‮一样‬句话:​“穿‮的旧破着‬裙子,‮们人‬记住的是裙子。#和平精英[超话]# 看了超话 1
  • 他们是最不快乐的星座,不会套交情,不易受诱惑,你永远犟不过摩羯,他总是有紧密的逻辑给自己做支撑,最后一定可以把你说服!比如在《花园》里,他说青裆子永远眯着眼睛假
  • 换新工作的一年以来,认识了不少旅业工作圈子里的新朋友,有零星二三好友因缘使然深交,何其有幸深得信任,于是有机会多次当知心小姐妹,观好友们的“众生相”突然想起金庸
  • 生活多不易,应该多笑笑—ꀿªᵖᵖᵞ☺ꔛ ♡ ☆.。凡事先播种,再谈收获。
  • #艺术留学#以深深的谦虚与忍耐去期待一个新的豁然贯通的时刻:这才是艺术地生活,无论是理解或是创造,都一样。——《给青年诗人的信》里尔克 #yuanyuan摘录#
  • 【正版国外经典父与子吹牛大王全10册】 【全10册】超值装,汇聚经典,彩图注音,名师导读,字词注释,拓展孩子认知,培养自主阅读能力,提高孩子兴趣,全面提升写作能
  • 願你更加強大,然後終於有天,可以笑著講述那些曾經讓你哭的瞬間,那時你應該是真正放下了。【任何回报,都需要我们主动去追求,而不是被动的感受】坦白地讲,貌似无论读书
  • 同学丢一张纸屑—那是制造恶业;我们捡起一张纸屑—这​【诚信互动,互动不要带,指路不吞必回】人人存善念,并能日行一善,则个人、家庭、社会一定安乐祥和。这世
  • 等到2024年,又是渐渐选择减少,万事努力的大环境。20年和21年写的时候,感觉并没有如此震荡。
  • 今后就是老冯同志和我们的父皇了~回归那个实心眼话少,内心柔软脾气爆的倔强男子~哈哈!武汉话加分,尤其小文每次慢悠悠的说老子老子的时候,只觉得好可爱。
  • #日译中练笔# 20170419 #天声人语# 消えた棟方志功原文如下: 重病の息子と静かに暮らしたい一心で、腕に自信の画家がモネの名画の贋作(がんさく)を描
  • ”认真的萌萌真的很严格,我在他俩对面也真的不敢说话[嘘](阿霸给了一摞没夹子也没顺序放好的纯纸,因为是我俩整理的,所以我一看就看得出来他大概拿的是哪些[污])阿
  • 将枸杞30克、炒枣仁40克、五味子10克泡茶,3天后睡眠质量就能得到改善,工作起来当然活力无限;4.心脏先天较弱的人宜早睡不宜熬夜,睡前喝一杯胡萝卜汁或西红柿汁
  • 我們還在!#因为值得所以等待[超话]# 謝謝你!