2013-11-09 5 views
0

숫자의 연속 숫자를 더하고 가장 큰 합계를 반환하는 함수를 작성해야합니다. 나는 인수 (m, t)를받는 함수를 작성했다. m-은 숫자 (int)를 나타내며 t (int도)는 연속되는 숫자의 합을 의미합니다. 이제는 숫자와 끝에서 모든 자릿수를 통해 최대 값을 반환하기를 원합니다.숫자의 연속 숫자의 최대 합

def sum_digits(m, t): 
    str_m= str(m) 

    for i in range(len(str_m)): 
     if t+i<len(str_m): 
      num= str_n[i:t+i] 
      num1='+'.join(num) 
      num2= str(eval(num1)) 
      lst= list(num2) 
     else: 
      break 


return max (lst) 

답변

0

당신이 작동하지 않는 이유는 lst마다 반복을 다시 받고 있다는 것입니다 : 내가 내 코드 나던 작품은 이유를 파악 해달라고. 나는 당신이 처음에 그것을 설정하고 그것을 반복 할 때마다 추가하려고 의도했다고 생각한다. 또한 :

Ahhhh !!!! eval이 필요하지 않습니다! 또한

def max_sum(m, t): 
    digits = map(int, str(m)) 
    max_sum = cur_sum = sum(digits[:t]) 
    for i, x in enumerate(s[t:], t): 
     cur_sum += x - digits[i - t] 
     max_sum = max(max_sum, cur_sum) 
    return max_sum 

,이 O (로그 m) 실행 시간 (또는 N O() n은 m의 자릿수 인 경우), 오히려 순 O (t * 로그 m) 이상 (또는 O를 (보유 t * n)).

+0

그게 바로,하지만 난 추가하고 싶어 할 때 내가 beginnig에서 빈 목록을 설정 한 그것은 나에게 오류 – user2751595

0
>>> def maxSum(m, t): 
... m = str(m) 
... answer = 0 
... for digits in (m[i:i+t] for i in range(len(m)-t+1)): 
...  answer = max(answer, sum(int(d) for d in digits)) 
... return answer 
... 
>>> maxSum(1234567, 3) 
18 
+0

감사를했다,하지만 당신이 나를 설명 할 수 있다면 내가 알고 싶습니다 무슨 광산의 문제? – user2751595

+0

@ user2751595 : PaulDraper는 모든 반복마다 'lst'를 재설정한다는 점에 동의합니다. 이것이 바로 정답을 얻지 못하는 이유입니다. 또한 변수를 정의하지 않고 변수'd'를 사용하고 있습니다. – inspectorG4dget