亮亮深吸一口气,打开了地图,地图上写着(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