给一个长度为15的字符串x='onmlkjihgfedcba‘
问现在如何改变x的排列顺序使得其经过冒泡排序交换次数为100?
列出所有排列组合和排列种数
求解!好难啊
b = []
#字符串所有排列组合(递归法)
def swap(str,i,j): #交换字符数组下标
temp=str[i]
str[i]=str[j]
str[j]=temp
def permutation(str,start): #字符全排列
n=len(str)
if str==None or start<0:
return 0
if start==n-1: #完成全排列后输出
print(''.join(str))
else:
i=start
while i<n:
swap(str,start,i) #交换start与i所在位置的字符
permutation(str,start+1) #固定第一个字符,对剩余字符进行全排列
swap(str,start,i) #恢复初始顺序
i+=1
y = "onmlkjihgfedcba"
a = list(y)
permutation(a,0)
print(b)
'''此处仍然差一个将permutation函数输出值存入b的代码,这个就靠你了,我不能全部都帮你搞定'''
for x in b:
s = 0
for i in range(len(x) - 1, 0, -1):
for j in range(i):
if x[j] > x[j+1]:
x[j], x[j+1] = x[j+1], x[j]
s += 1
if s==100:
print(p)
这是什么需求,
x='onmlkjihgfedcba'
x1 = list(x)
s = 0
d = {}
for i in range(len(x1) - 1, 0, -1):
for j in range(i):
if x1[j] > x1[j+1]:
x1[j], x1[j+1] = x1[j+1], x1[j]
s += 1
d[s] = x1.copy()
print(d[s - 100])
创建一个list,包括这个字符串的每一个字符
然后就遍历+循环+遍历,就比如 o + n + m。。。。 然后下一次循环就是 o + m + nlkji 。。。
然后就冒泡排序一下,这个csdn上面随便搜,然后你只需要在里面加一个计次就好
计次如果是100,就可以算一个排列组合,然后额外再有一个计次,计算排列种数