재 귀적 이지 않 은 출력 1-N 의 전체 배열 인 스 턴 스(추천)

왕 이 게임 필기시험 문제 알고리즘 문제 중 하 나 는 C+,자바,Python 을 사용 할 수 있 습 니 다.Python 코드 의 양 이 적 기 때문에 저 는 Python 언어 를 선택 하 겠 습 니 다.
알고리즘 의 전체적인 사 고 는 1,2,3...N 이라는 배열 부터 다음 배열 을 계산 하고 출력 N,N-1,...1 까지 입 니 다.
그러면 주어진 배열 의 다음 배열 을 어떻게 계산 합 니까?
[2,3,5,4,1]이라는 서열 을 고려 하여 뒤에서 1 쌍 이 증가 하 는 인접 숫자,즉 3,5 를 찾 습 니 다.그러면 3 은 교체 수 이 고 3 이 있 는 위 치 는 교체 점 이다.
3 과 교체 점 뒤에 3 보다 큰 최소 수 를 교환 하고 여 기 는 4 로[2,4,5,3,1]을 얻 을 수 있 습 니 다.그리고 교체 점 뒤의 첫 번 째 수 와 마지막 수,즉 5,1 을 교환 합 니 다.다음 서열 을 얻 을 수 있 습 니 다.[2,4,1,3,5]
코드 는 다음 과 같 습 니 다:

def arrange(pos_int):
  # 1-N    tempList ,     
  tempList = [i+1 for i in range(pos_int)]
  print(tempList)

  while tempList != [pos_int-i for i in range(pos_int)]:
    for i in range(pos_int-1,-1,-1):
      if(tempList[i]>tempList[i-1]):
        #  tempList[i-1]            ,  。
        minmax = min([k for k in tempList[i::] if k > tempList[i-1]])
        #  minmax tempList    
        index = tempList.index(minmax)
        #  
        temp = tempList[i-1]
        tempList[i-1] = tempList[index]
        tempList[index] = temp

        #   tempList[i]       ,  tempList      
        temp = tempList[i]
        tempList[i] = tempList[pos_int-1]
        tempList[pos_int-1] = temp

        print(tempList)
        break
          
  
  
arrange(5)  

이상 의 비 재 귀적 인 출력 1-N 의 전체 배열 인 스 턴 스(추천)는 바로 편집장 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저 희 를 많이 사랑 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기