- /*(6) 배열에서 다음을 만족하는 배열의 두 원소 x, y를 찾는 함수:
- 배열에서 x는 y보다 앞에 있으면서 y-x의 값이 최대
- 예: 다음 배열에서 x = 3, y = 19이다.
- 6 15 9 7 20 3 5 19 1 12*/
- //군머 갔다와서 머가리 빈상태로 짠거라.. 이해해주세요 엉망같아도.. ㅠ
- #include<iostream>
- #include<assert.h>
- using namespace std;
- int i;
- int savenum;
- struct absarray
- {
- int arr[8000];
- int index1;
- int index2;
- int saveindex;
- int saveindex2;
- };
- absarray maxnum(absarray input)
- {
- if (i == 2)
- {
- return input;
- }
- else
- {
- if (input.index1 == 1 && input.index2 == 0) //처음 시도
- {
- savenum = input.arr[input.index1] - input.arr[input.index2];
- input.saveindex = input.index1;
- input.saveindex2 = input.index2;
- input.index1++;
- return maxnum(input);
- }
- else //본격적 비교 시작.
- {
- if (savenum < (input.arr[input.index1] - input.arr[input.index2])) //전의 비교한수와 다음 비교수
- {
- savenum = (input.arr[input.index1] - input.arr[input.index2]);
- input.saveindex = input.index1; //좌표 저장.
- input.saveindex2 = input.index2;
- if (input.index1 > i - 1)
- {
- input.index2++;
- input.index1 = input.index2 + 1;
- }
- if (input.index2 > i - 1)
- {
- return input;
- }
- return maxnum(input);
- }
- else
- {
- input.index1++; //다음 거 비교하기 위해 1칸 이동
- if (input.index1 > i - 1) // 이동했는데 배열의 마지막 거보다 커져버리면 리셋
- {
- input.index2++;
- input.index1 = input.index2 + 1;
- }
- if (input.index2 > i - 1)
- {
- return input;
- }
- return maxnum(input);
- }
- }
- }
- }
- int main()
- {
- absarray start;
- cout << "배열에 입력할 갯수를 입력해주세요(2개이상)";
- cin >> i;
- assert(i >= 2);
- cout << "배열의 최대값 구해주기 배열에 들어갈 수 입력 :";
- for (int a = 0; a < i; a++)
- cin >> start.arr[a];
- start.index1 = 1;
- start.index2 = 0;
- absarray copy = maxnum(start);
- cout << copy.arr[copy.saveindex] << endl;
- cout << copy.arr[copy.saveindex2] << endl;
- return 0;
- }
같은 내용을 스택에 복사하는게 무의미한것 같음 ㅋㄷㅋㄷ
무의미해도... 뭐 이게 제 능력 안이니까여; ㅋㅋ 결국 8000개는 안되네요 ㅋㅋ 1000개가 max..ㅋㅋ
새글로 달께.
http://autogram.tk/이
중고차 어플리케이션 어떤가요?