int main(int argc, const char * argv[]) {
myobj middle, side;
int total;
cin>>total;
int *arr=new int[total];
for(int i=0; i<total; i++)
cin>>arr[i];
middle=bridge_arr(arr, 0, total);
side=search_arr(arr, 0, total);
if(side.max>middle.max)
cout<<side.first<<" "<<side.last<<" "<<side.max<<endl;
else
cout<<middle.first<<" "<<middle.last<<" "<<middle.max<<endl;
return 0;
}
myobj bridge_arr(int *array, int first, int last)
{
myobj mystore;
int left_store=-999999999; //almost limit of int type num
int right_store=-999999999;
int store_left_index=0;
int store_right_index=0;
int left_sum=0;
int right_sum=0;
for(int i=(first+last)/2; i>=first; i--) //반나눈 앞부분의 마지막 인덱스부터 뒤로 찾아감.
{
left_sum=left_sum+array[i];
if(left_store<left_sum)
{
left_store=left_sum;
store_left_index=i;
}
}
님 왜 되는거 안된다고해여
저 뒤끝개쩜
리얼 쓰레기값들어가여.... 도와주셈.. 지금 개 어리둥절함.. 스샷이라도 찍어서 보내줄까여
아니 아까 내가 말한거
왜 해보지도않고 안된다고해여 내가 풀어서 올려놓기까지했는데
언제 올리심? 안올린줄알고. 진짜 좆망했었는데.
ㅈㅅ제가말이심함..
저병신..
똥송한 능력가진 제가 병신이져. 그건 됐고 이거 원인좀 알려주세여..
이거 풀면 1번 문제도 풀수있음, 지금 이렇게함 분할정복-재귀로 하면 미드를 중간을 기준으로 앞뒤의 결과가나오고, 중간에 걸쳐지는걸 구하는걸 알았음 그거도 구해서 두개 누가 더 큰지 비교하면끝인데 저기서 배열 변서 시만ㅇ러ㅣㅏㅁ너리;ㅓㅁㅈ다;러ㅣㅏ;ㅈ더리;ㅓㅁ지다;러
님 제가 말한대로 풀면 풀리는데
다시 곰곰히 생각해봐여
님이 올린 로직 이해를 못하겠음
반을 나누는데 그게 앞하고 뒤에있는데 구해진다....라....함수에서-->반을 나누고 그때부터 분할을 시작하면서 하는데 이미 반으로 나뉜 시점에서 서로 떨어진걸 어캐 구하는지 도무지 이해가 안감. 중간을 고려하는 함수가 따로 있어야할거같은데. ㅇㅇ
1 2 3 4로 놓고 보자면
1 2 / 3 4로나눠서
맥스값은 전역변수로 선언해놓고
1 2에서 max값 구하고 이 서브어레이 1,2의 최소값을 반환함
3 4에서 max값 구하고 3 4에서 최대값을 반환함
그럼 subArr(1,2)에서의 최소값에 subArr(3,4)의 최대값 두개 차를 구한 뒤 max값을 갱신하면 됨.
이렇게 설명해도 이해 안되면 님은 컴공 접고 다른 전공 찾아보는거 추천.
헐 미친.... 이해됨.. 개간단하네; 뭐지;
난 무슨일을 한것일까. ??
수원잡대다니는 저보다 못하는거보니
님도땔깜 나도땔깜
동적할당 받은 장소에 있던 쓰레기값을 그대로 더해서 그런 것 같습니다.
수원잡대면 혹시 유생들이 씹선비질 하고다니는 대학아니오?
동적할당 받고 나서 초기화한 다음에 써야하네요..
초기화라면 arr[total]={0}; 이런식으로 말입니까?
자바만 해서 모르지만 그런 초기화 맞습니다
모두 0으로 해야하는데 그렇게하면 모두 0이 되는지는 모르겠네요
저도 자바로 짜고싶었으나 함수 클래스 리턴하고 래퍼런스형태를 몰라서 포기했습니다. ㅋㅋㅋㅋㅋ 자바 입문이라. ㅋㅋ
어.. 입력받는데 왜 초기화 얘길 했지;;; 죄송합니다. 모르겠습니다.
{0,}으로 받으면 모두 초기화대구여
array 초기화하면 답 잘 나올거에여
아니, 사실 답 잘 나오지 않겠다
array index 초과해버려서 값 출력하고 꺼진걸수도 있슴
아니
더미값을 넣어
w88/피나 축구/야구/농구 양방플 문의줘라 nete77