여기에서 배열 또는 문자열이 제공됩니다. 우리는 배열이나 문자열의 요소를 뒤집는 프로그램을 만들 것입니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
array = {2, 5, 7, 1, 9}
출력
{9, 1, 7, 5, 2}
입력
string = “Hello!”
출력
!0lleH
프로그램을 생성하기 위해 우리는 배열/문자열의 요소를 반복할 것입니다(둘 다 같은 방식으로 작동합니다). 시작과 끝을 위해 하나의 변수를 사용합니다. 그리고 두 요소를 모두 바꿉니다. 시작 변수를 증가시키고 끝 변수를 감소시킵니다. 스와핑은 시작 변수의 값이 종료 변수보다 작을 때까지 계속됩니다.
프로그램은 두 가지 방법으로 만들 수 있습니다. 하나는 반복적이고 다른 하나는 재귀적입니다. 우리는 두 가지 방법의 작동을 시연할 프로그램을 만들 것입니다.
예시
방법 1:반복적 접근
Program : #include <iostream> using namespace std; void revereseArrayIt(int arr[], int start, int end){ while (start < end){ int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } int main() { int arr[] = {6, 9, 1, 4, 0, 5}; int n = sizeof(arr) / sizeof(arr[0]); cout<<"Orignal Array : "; for (int i = 0; i < n; i++) cout<<arr[i]<<" "; cout<<endl; revereseArrayIt(arr, 0, n-1); cout << "Reversed array : "; for (int i = 0; i < n; i++) cout<<arr[i]<<" "; cout<<endl; return 0; }
출력
Orignal Array : 6 9 1 4 0 5 Reversed array : 5 0 4 1 9 6
예시
방법 2 :재귀적 접근
#include <iostream> using namespace std; void revereseArrayRec(int arr[], int start, int end){ if(start >= end) return; int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; revereseArrayRec(arr,start+1, end-1); } int main() { int arr[] = {6, 9, 1, 4, 0, 5}; int n = sizeof(arr) / sizeof(arr[0]); cout<<"Orignal Array : "; for (int i = 0; i < n; i++) cout<<arr[i]<<" "; cout<<endl; revereseArrayRec(arr, 0, n-1); cout << "Reversed array : "; for (int i = 0; i < n; i++) cout<<arr[i]<<" "; cout<<endl; return 0; }
출력
Orignal Array : 6 9 1 4 0 5 Reversed array : 5 0 4 1 9 6