수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

통나무 자르기 비용 최솟값 알고리즘 인데요

터전

2023.04.01


질문 제목 : 질문 내용 :

통나무가 잘리는 길이에 비례해서 그 값이 결정되는 문제입니다.

----------------- 길이가 10인 통나무에 2,5,8 지점에 자르는 지점이 있다고 가정합니다
| | | (이때, 자르는 지점과 자르는 포인트 갯수는 프로그래머가 설정할 수 있습니다)
-----------------
258

총 길이가 10이므로 순차적으로 통나무를 자른다면 일단 길이가 10의 2지점에서 잘랐으므로 처음 비용은 10
그리고 2지점에서 통나무가 잘렸으므로 총길이가 8로 변합니다. 이때, 5지점에서 한번 더 잘렸으므로 비용은 8
마지막으로 통나무 길이는 총길이가 5로 변하고 8지점에서 한번 더 잘리면 비용은 5가 됩니다.

그리고 문제는 최소비용 이므로, 자르는 순서를 바꿔서,
길이가 10인 통나무의 5지점을 먼저 자른다면, 통나무는 각각 길이가 5인 통나무로 변하먼서 비용은 10,
그리고 두개로 나뉜 통나무중 2지점에 자르는 지점이 있는 통나무를 자르면 비용은 5
마찬가지로 전체 길이가 5인 통나무의 8지점의 통나무를 자른다면 비용은 5

자르는 방법에 따라서 비용이 달라집니다.

제가 구현한 코드는요,

#define max 100

//전역변수
int cut_point[max];int calculate_cost(int arr[], int numofcut, int start, int finish){
int target,len=finish-start;
if ( (target=find_middle(arr,start,finish) ) ==false ) //만약 중간값이 없다면,
return 0;

return len+calculate_cost(arr,numofcut,start,target)+calculate_cost(arr,numofcut,target,finish);
}

저기 위에 있는 int find_middle(int arr[], int start, int finish) 이건 어디다가 구현은 해놨는데,
노트라 잃어버린거 같습니다..;;

그러니까 위의 인자를 받아서, 위에있는 전역변수에 들어있는 지점들 중에 가장 중간값을 반환하는 함수입니다.

설명을 더 보태자면,처음 길이가 10인 통나무에서 잘리는 지점이 가장 중간값을 찾아서 리턴합니다.

위의 경우는 5이죠,

그리고 길이가 5인(0~5) 통나무를 함수의 인자로 건네 받았다면, 가장 중간값인 2를 리턴,

다른 길이가 5인(5~10)인 통나무를 함수의 인자로 건네 받았다면, 그 중간값인 8을 리턴합니다.

컴파일 할 수 있는 상황이 아니라 염치불구하고 올립니다 ㅡㅜ

궁금한 점은, 저기에 논리적이나 문법적 오류가 있는지 그리고 더 효율적으로 코딩할 수 있는지 그런게 궁금합니다.

틀렸다면 뭐가 틀렸는지도 알려주시면 감사하겠습니다

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 해찬나래

    늦었지만...
    생각하신 알고리즘은 10의통나무를 2.4.5.8의 지점을베었을때 23의 비용이나옵니다 하지만 4852 순으로베면22의비용이발생하죠 동적계획법으로 생각해보세요

번호 제 목 글쓴이 날짜
2695766 달팽이 배열 어디서 틀렸는지 모르겠습니다ㅠㅠ 연분홍 2025-05-23
2695738 fopen과fclose질문~~ (5) 희선 2025-05-23
2695707 3의 배수 나타내기. (2) 수리 2025-05-23
2695626 피보나치수열 과제 때문에 질문 드립니다. (6) 옆집언니 2025-05-22
2695595 포인트공부중입니다 int형에서 4=1 인가요? (3) 족장 2025-05-22
2695567 드라이브 고유번호를 가져오는 함수 (2) 초코맛사탕 2025-05-21
2695533 음수의 산술변환! 질문이요 ㅠㅠ... (4) 꽃여름 2025-05-21
2695506 구조체 배열 이용 도서목록 출력 프로그램 (1) 가을귀 2025-05-21
2695450 c언어 함수 질문이요.... 이슬비 2025-05-20
2695403 VirtualAlloc함수 및 메모리 질문 크리에이터 2025-05-20
2695355 c언어 for함수 미쿡 2025-05-19
2695327 안녕하세요 제가 이번에 좀 큰 프로그램을.. 악당 2025-05-19
2695295 mutex동기화의 thread기반 채팅 서버소스 질문입니다 그루터기 2025-05-19
2695270 질문이요..swap 관한겁니다..ㅠㅠ (3) 콩알녀 2025-05-19
2695244 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) 큰꽃늘 2025-05-18
2695166 do while 문 어떤것이잘못된건지 모르겠어요 (2) 아이폰 2025-05-18
2695122 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) 수련 2025-05-17
2695091 txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) 헛장사 2025-05-17
2695063 수도요금 프로그램좀 짜주세요. 시내 2025-05-17
2695033 답변좀요ㅠㅠ (1) 비사벌 2025-05-16
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com