亮亮深吸一口气,打开了地图,地图上写着(X:12,Y:?),这可让亮亮犯了愁,这个问号代表了什么意思呢? 亮亮绞尽脑汁也想不出什么思路,忽然他在地图背面发现了一串数字,数字下面写着一段话“这只是一个1~n的混乱排列,不用在意第i个值”,亮亮眼前一亮,“这个混乱排列中第i个一定是Y的值!”于是,亮亮开始恢复这个混乱排列。
每组数据第一行一个整数n(0<n≤25),第二行即现在纸上的数字串
一行n个空格隔开的整数,为小明写下的排列。
4 2413
2 4 1 3
while True: try: n = int(input()) inputs = input() res = [] flag = [0 for i in range(n)] while inputs: if 0 not in flag: break if flag[int(inputs[0])-1] == 0: res.append(inputs[0]) flag[int(inputs[0])-1] = 1 inputs = inputs[1:] elif int(inputs[:2]) <= n and flag[int(inputs[:2])-1] == 0: res.append(inputs[:2]) flag[int(inputs[:2])-1] = 1 inputs = inputs[2:] print(' '.join(res)+ ' ') except:break
try: while 1: n = int(input()) s = input() flag = [0 for i in range(n+1)]#标记数组,某个数字是否已经出现 ans = [] def rec(string,flag,ans): if 0 not in flag[1:]:#所有数字都已出现,则返回最终结果 return ans if string=='': return None if flag[int(string[:1])]==0:#当前1位数字未出现过,相应标记置1,递归排列后续可能情况 flag[int(string[:1])] = 1 return rec(string[1:],flag,ans+[string[:1]]) if int(string[:2])<=n and flag[int(string[:2])]==0:#当前2位数字未出现过且不大于n flag[int(string[:2])] = 1#相应标记置1 return rec(string[2:],flag,ans+[string[:2]])#递归排列后续可能情况 ans = rec(s,flag,ans) out='' for i in ans: out+=i+' ' print(out) except EOFError: pass
DFS
try:
while 1:
n = int(input())
s = input()
def rec(s_temp,ans,gg):
if 0 not in ans[1:]:
return gg
if s_temp=='':
return None
if ans[int(s_temp[:1])]==0:
ans[int(s_temp[:1])] = 1
return rec(s_temp[1:],ans,gg+[s_temp[:1]])
if int(s_temp[:2])<=n and ans[int(s_temp[:2])]==0:
ans[int(s_temp[:2])] = 1
return rec(s_temp[2:],ans,gg+[s_temp[:2]])
ans = [0 for i in range(n+1)]
gg = []
hh = rec(s,ans,gg)
out=''
for i in hh:
out+=i+' '
print(out)
except EOFError:
pass