[5 4 3 2 1
5 4 3 1 2
5 4 2 3 1
5 4 1 3 2
5 4 2 1 3
5 4 1 2 3
5 3 4 2 1
5 3 4 1 2
5 2 4 3 1
5 1 4 3 2
5 2 4 1 3
5 1 4 2 3]
上述矩阵是否存在一个矩阵操作算法得到以下结果
每一行出现相邻的目标数字,即在该数组中记为0,反之记为1,首尾也算相邻,例如
S1_2=[0,0,1,1,0,0,0,0,1,1,1,1]
S1_3=[1,0,0,0,0,1,1,1,0,1,0,1]
S1_4=[1,1,1,0,1,0,1,0,1,0,0,0]
S1_5=[0,1,0,1,1,1,0,1,0,0,1,0]
S2_3=[0,1,0,0,1,0,1,1,1,0,1,0]
S2_4=[1,1,0,1,0,1,0,1,0,1,0,0]
S2_5=[1,0,1,0,1,1,1,0,0,0,0,1]
S3_4=[0,0,1,1,1,1,0,0,0,0,1,1]
S3_5=[1,1,1,1,0,0,0,0,1,1,0,0]
S4_5=[0,0,0,0,0,0,1,1,1,1,1,1]
共10个数组
我用矩阵乱算算出来了,结题了
m=\
[[5,4,3,2,1],
[5,4,3,1,2],
[5,4,2,3,1],
[5,4,1,3,2],
[5,4,1,2,3],
[5,3,4,2,1],
[5,3,4,1,2],
[5,2,4,3,1],
[5,1,4,3,2],
[5,2,4,1,3],
[5,1,4,2,3]]
for k in range(1, 5):
for j in range(k + 1, 6):
s = []
for l in m:
v = abs(l.index(k) - l.index(j))
s.append(0 if v == 1 or v == 4 else 1)
st = f'S{k}_{j}={s}'
print(st)
exec(st)
# print(eval(f'S{k}_{j}'))