통나무 자르기 비용 최솟값 알고리즘 인데요
터전
질문 제목 : 질문 내용 :
통나무가 잘리는 길이에 비례해서 그 값이 결정되는 문제입니다.
----------------- 길이가 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을 리턴합니다.
컴파일 할 수 있는 상황이 아니라 염치불구하고 올립니다 ㅡㅜ
궁금한 점은, 저기에 논리적이나 문법적 오류가 있는지 그리고 더 효율적으로 코딩할 수 있는지 그런게 궁금합니다.
틀렸다면 뭐가 틀렸는지도 알려주시면 감사하겠습니다
-
해찬나래
늦었지만...
생각하신 알고리즘은 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 |