1、题目描述
s=input()
s_sort=sorted(s)
dic={}
for v in s_sort:
if v not in dic:
dic[v]=0
dic[v]+=1
res=''
for key in list(dic.keys()):
res+=(key+str(dic[key]))
print(res)
注意:要让键值有顺序进入字典,然后就可以按顺序拿出来了。
2、题目描述
比较笨的递归方法,有些点计算了很多次:
def ways(number):
if number==0:
return 1
if number==1:
return 1
times=0
j=0
while 2**j<=number:
times+=ways(number-2**j)
j+=1
return times
n=int(input())
for i in range(n):
number=int(input())
res=ways(number)
print(res)
自下而上方法:
def down_up(number):
sco = [0 for i in range(number+1)]
sco[0]=1
sco[1]=1
for i in range(2,number+1):
j=0
tmp=0
while 2**j<=i:
tmp+=sco[i-2**j]
j+=1
sco[i]=tmp
return sco[number]
n=int(input().strip())
for i in range(n):
number=int(input().strip())
print(down_up(number))