playXP

서브 메뉴

Page. 1 / 18500 [내 메뉴에 추가]
글쓰기
작성자 아이콘 marine12
작성일 2019-10-13 17:45:00 KST 조회 414
제목
파이썬 코드 recursionerror라는데 한 번만 봐주세용(수정)

def max_sum(A, left, right):

if left == right-1:

return A[left]

else:

m=(left + start)//2

left_max=max_sum(A,left,med)

right_max=max_sum(A,mid,right)

cross_max=max_cross(A,left,m,right)

if(left_max > right_max > cross_max):

return left_max

elif(right_max > left_max > cross_max):

return right_max

else:

return cross_max

def max_cross(A, left, m, right)

cross_left= float('-inf')

cross_temp= 0

cross_begin=m

for i in range(m -1, left -1, -1):

cross_temp - cross_temp + A

if cross_temp>cross_left:

cross_left = cross_temp

cross_begin = i

cross_right= float('-inf')

cross_temp=0

cross_finish=m+1

for i in range(m, right):

cross_temp = cross_temp + A

if cross_temp>cross_right:

cross_right = cross_temp

cross_finish = i +1

return cross_begin, cross_finish, cross_left+cross_right

# A[left], ..., A[right-1] 중 최대 구간 합 리턴

 

A = input('Enter the list of numbers: ')

A = [int(x) for x in input().split()]

sol = max_sum(A, 0, len(A))

print(sol)​ 

 

분할정복 방법으로 최대구간 합 구하려고 하는데 계속 line 15 그러니까 def max_cross(A, left, m ,right)에서 invalid syntax라고 뜨네요. python 3입니당...

 

def max_sum(A, left, right):

if left == right:

return A[left]

else:

m=(left + right)//2

left_max=max_sum(A,left,m)

right_max=max_sum(A,m,right)

cross_max=max_cross(A,left,m,right)

if(left_max > right_max > cross_max):

return left_max

elif(right_max > left_max > cross_max):

return right_max

else:

return cross_max

def max_cross(A, left, m, right):

cross_left= float('-inf')

cross_temp= 0

cross_begin=m

for i in range(m -1, left -1, -1):

cross_temp - cross_temp + A

if cross_temp>cross_left:

cross_left = cross_temp

cross_begin = i

cross_right= float('-inf')

cross_temp=0

cross_finish=m+1

for i in range(m, right):

cross_temp = cross_temp + A

if cross_temp>cross_right:

cross_right = cross_temp

cross_finish = i +1

return cross_begin, cross_finish, cross_left+cross_right

# A[left], ..., A[right-1] 중 최대 구간 합 리턴

 

A = input('Enter the list of numbers: ')

A = [int(x) for x in input().split()]

sol = max_sum(A, 0, len(A))

print(sol)​ 

 

수정본입니다. 수정했더니 재귀함수 최대횟수 오류가 뜨네용 구글링하니까 파이썬은 천번 밖에 못 돌려서 sys import하고 명령어 넣고 돌리라는데 분명 답지 sample에서는 import sys를 안하고 푼 거 같은데 머가 잘못된건가요

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

아이콘 GLaDOS (2019-10-13 17:47:09 KST)
0↑ ↓0
센스 이미지
: 안찍은거아님?
아이콘 marine12 (2019-10-13 19:42:29 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
ㄴ 아차 띨띨이는 웁니다 ㅜㅜ
아이콘 시슴 (2019-10-13 23:45:21 KST)
0↑ ↓0
센스 이미지
파이썬이 쉽기는 쉽다... 배운 적 없는데 대충 알 것 같아
아이콘 판다렌판다 (2019-10-14 01:21:06 KST)
0↑ ↓0
센스 이미지
어렵네요...
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.