1.两种做法都是只通过了40%,不知道错在哪儿
import sys
n, m = sys.stdin.readline().strip().split(" ")
m=int(m)
maxj=-1
res=[]
for i in range(len(n)-m):
maxtmp=-1
for j in range(maxj+1,m+i+1):
if int(n[j])>maxtmp:
maxtmp=int(n[j])
maxj=j
res.append(str(n[maxj]))
print "".join(res)
import sys
n, k = sys.stdin.readline().strip().split(" ")
k=int(k)
leaveCount=len(n)-k
j=0
t=j
res=[]
while leaveCount>0:
max_value=n[j]
while j<len(n)-leaveCount+1:
if n[j]>max_value:
max_value=n[j]
t=j
j+=1
res.append( str(max_value))
t+=1
j=t
leaveCount-=1
print "".join(res)
2.背包问题,AC 100%
import sys
n,m=map(int,sys.stdin.readline().strip().split(" "))
A=[]
V=[]
for i in range(n):
line=map(int,sys.stdin.readline().strip().split(" "))
A.append(line[0])
V.append(line[1])
if m<=0 or n<=0:
print 0
else:
dp =[0 for _ in range(m+1)]
for i in range(n):
for j in range(m,A[i]-1,-1):
dp[j]=max(dp[j-A[i]]+V[i],dp[j])
print dp[m]