반응형
위의 소스 코드를 다운 받아서 보기 바랍니다.
소스코드 올린게 보기 힘드신 분들은.
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");
}
반응형
댓글