욕심쟁이 기법을 사용하여 가장 빠른 완료 시간을 감지하는 간격 스케줄링 알고리즘을 시뮬레이트하려고합니다. 내 문제는 그것이 콘솔 응용 프로그램에서 생성 될 경우 입력은 무엇입니까? 어떤 접근 방식입니까? 고맙습니다.간격 스케줄링 알고리즘 : 가장 빠른 마침 시간
1
A
답변
0
각 작업의 입력은 시작 시간과 종료 시간입니다 (예 : 10:00 시작 시간과 14:00 종료 시간). 콘솔 입력을 Dates 나 그 라인을 따라 무언가로 파싱 할 수 있습니다. 그러나 이것이 단순한 시뮬레이션이라면 콘솔 입력이 음수가 아닌 정수 (예 : 4 시작 시간과 9 종료 시간)가 될 수 있습니다. 입력을 쉽게 파싱 할 수 있습니다.
가장 짧은 작업 (가장 짧은 간격의 작업)을 항상 선택하는 등 취할 수있는 여러 가지 방법이 있습니다. 최적의 방법은 항상 먼저 완료되는 작업을 선택하는 것입니다 (예 : 종료 시간에 따라 작업을 정렬하고 충돌을 일으키지 않는 다음 작업을 선택할 수 있음,이를 수행하기위한 선형 시간 알고리즘이 있음).
빠른 응답을 보내 주셔서 감사합니다. 특정 수의 작업으로 제한하지 않아야합니까? 예를 들어 5 개의 작업에 대해 시작 및 종료 시간을 입력하십시오. 그 후에 처리하십시오. 또는 사용자가 원하는 수의 작업을 입력하도록 한 다음 작업을 지시 한 후에 처리하도록하는 것이 좋습니다. 그리고 또 하나, 당신이 당신의 코멘트에서 말했듯이. "당신은 종료 시간에 따라 작업을 분류하고 충돌하지 않는 다음 작업을 선택할 수 있습니다."이걸로 내 이해는 내가 각 작업의 모든 종료 시간 (가장 짧은 작업)을 확인하고 합쳐서 대부분의 최소한의 시간? 내가 맞습니까? – ljpv14
원할 경우 입력 크기를 제한 할 수 있지만 결국 사용자는 스스로 지루해져 데이터 입력을 중지합니다. 그리고 실행 시간 (종료 시간 - 시작 시간)을 합산하거나 총 소요 시간 (마지막 작업의 종료 시간 - 0)을 결정하는 두 가지 방법으로 작업을 요약 할 수 있습니다. –