본문 바로가기
카테고리 없음

뮤직비디오(이분검색)응용

by 대구부자 2019. 12. 15.
반응형

 

 

 

 

 

 

 

 

뮤직비디오_이분검색_응용.cpp
다운로드

 

위의 소스 코드를 다운 받아서 보기 바랍니다.

 

소스코드 올린게 보기 힘드신 분들은.

 

100%구현한게 아니고 약간의 수정 보완 해야 될부분 이 있습니다.

 

참고 바랍니다.

 

 

 

 

 

#include <stdio.h>

#include <stdlib.h>

#include <iostream>

#include <vector>



using namespace std;





void music_sort(int* array , int &music_num)

{



 for (int i = 0; i < music_num; i++)

 {

 int temp = 0;



 for (int k = 0; k < music_num; k++)

 {

 if (array[i] < array[k])

 {

 temp = array[i];

 array[i] = array[k];

 array[k] = temp;

 }

 }

 }

 for (int i = 0; i < music_num; i++)

 {

 cout << array[i] << endl;

 }



}









void insert_time(int* array, int music_num)

{

 for (int i = 0; i < music_num; i++)

 {

 cin >> array[i];

 }   // 재생 시간 입력 구현부 //



}





void show(int &music_num , int &cd_count ) 

{

 cout << "녹화 곡 수를 입력 하세요" << endl;

 cin >> music_num;  //  녹화 곡 수

 cout << "몇 장 으로 나눌까요 ?" << endl;

 cin >> cd_count;

}





void binary_serch(int *array , int music_num , int cd_count ) 

{

 int cnt = 1;

 int middle_index = music_num / 2+1;

 int end_index = 0;

 int start_index = 0;

 int sum = 0;



 vector <int> res; 



 while (true)

 { 

 end_index = music_num;

 start_index = middle_index;

 res.push_back(start_index);

 cnt++;

 if (cnt == cd_count)

 {

 break;

 } 



 middle_index = (start_index+(end_index - start_index) / 2)+1; 



 if (middle_index == start_index)

 { // 더이상 쪼갤게 없음 

 int last_index = res.at(*res.end());



 // last_index = last_index + (end_index - last_index) / 2;

 // res.push_back(last_index);

 }

 }

 res.push_back(music_num+1);



 vector<int>::iterator i;

 int k = 0;



 for (i = res.begin(); i != res.end(); i++)

 {

 int temp = 0;

 if (i == res.begin()) { k = 0; } 



 for (int j = k; j < *i; j++) 

 {

 temp = temp + array[j];

 }

 if (sum < temp)

 {

 sum = temp;

 }

 k = *(i);



 } 

 cout << endl;

 cout << sum << endl;

}





int main() 

{

 int array[1000] = { 0, }; // 곡 마다 재생 시간 담을 배열,

 int music_num = 0;

 int cd_count = 0;





 show(music_num, cd_count);

 insert_time(array, music_num); // 각 곡 재생 시간 입력 함수 

 music_sort(array, music_num); // 재생 시간 정렬 함수 





 binary_serch(array, music_num-1, cd_count );





 //최소값을 구해야 함.

 system("pause");

}



 

 

 

 

 

 

 

 

반응형

댓글