本题的考虑点:
(1)列表中存储的是相应位置的个数,实际要储存的是所在的位置,因此使用flag来记录所处理数据的位置。
(2)考虑清楚第一个位置,也就是0的个数,我把0的个数单独拿出来分析的,使用pop将第一个数据从列表中删除,然后判断其是否为零,若不为零的话,单独考虑,因为其不为零,所以就是在剩下的列表中找到第一个非零的所在位置,把此数据所在的位置存储到结果数列中,然后再把数据减一。再接下来的执行就是常规的执行,剩余的数列,找到数列中的每一个非零数据,将数据所在位置按数据的个数存储到新的列表中,最后将列表转换为字符串输出即可。
(3)需要注意的就是要弄清楚原始列表中存储的仅是个数,真正应该存储到新列表的是数据所在的位置。可以说Python真的很好用。
def get_in():
string = input()
list = []
for num in string.split():
list.append(int(num))
return list
def get_result(list):
first_num = list.pop(0)
sum_list = []
if first_num != 0:
flag = 0
while True:
if list[flag] != 0:
list[flag] -= 1
break
else:
flag += 1
sum_list.append(flag + 1)
while first_num:
sum_list.append(0)
first_num -= 1
flag = 1
for num in list:
if num != 0:
while num:
sum_list.append(flag)
num -= 1
flag += 1
return sum_list
my_list = get_in()
list = get_result(my_list)
my_str = ''
for num in list:
my_str += str(num)
print(my_str)