Аналіз алгоритму
Нехай m – вхідний масив цілих чисел. Виведемо спочатку останній елемент масиву m[n – 1]
. Після чого послідовно виведемо всі числа від m[0]
до m[n – 2]
.
Розглянемо реалізацію, в якій елементи масиву будуть реально переставлятися. Для цього необхідно в i-у комірку масиву перенести елемент з (i – 1)-ої комірки, 1 ≤ i ≤ n – 1. Окремо слід перенести елемент з (n – 1)-ої комірки в 0-у.
Реалізація алгоритму
Оголосимо цілочисельний масив m.
int m[101];
Читаємо вхідні числа в масив m.
scanf("%d",&n); for(i = 0; i < n; i++) scanf("%d",&m[i]);
Виведемо спочатку останнє число масиву m[n – 1]
– воно буде першим після циклічного зсуву елементів на одну позицію вправо.
printf("%d",m[n-1]);
Далі виведемо всі числа масиву, починаючи з нульового m[0]
і до передостаннього m[n – 2]
.
for(i = 0; i < n - 1; i++) printf(" %d",m[i]); printf("\n");
Реалізація – з перестановкою елементів
Оголосимо цілочисельний масив m.
int m[101];
Читаємо вхідні числа в масив m.
scanf("%d",&n); for(i = 0; i < n; i++) scanf("%d",&m[i]);
Запам'ятаємо останній елемент m[n – 1]
у змінній temp.
temp = m[n-1];
Переміщуємо елемент m[i – 1]
в m[i]
(1 ≤ i ≤ n – 1).
for(i = n - 1; i > 0; i--) m[i] = m[i - 1];
На початок масиву присвоюємо елемент, який стояв в кінці масиву.
m[0] = temp;
Виводимо результуючий масив.
for(i = 0; i < n; i++) printf("%d ",m[i]); printf("\n");
Реалізація – STL rotate
Оголосимо цілочисельний вектор.
vector<int> v;
Читаємо вхідні дані.
scanf("%d", &n); v.resize(n); for (i = 0; i < n; i++) scanf("%d", &v[i]);
Проізведемо зсув елементів масиву так, щоб останній елемент став першим.
rotate(v.begin(), v.begin() + n - 1, v.end());
Виводимо результуючий масив.
for (i = 0; i < n; i++) printf("%d ", v[i]); printf("\n");
Реалізація – динамічний масив
#include <stdio.h> int i, n, a; int *m; int main(void) { scanf("%d",&n); m = new int[n]; for(i = 0; i < n; i++) scanf("%d",&m[i]); printf("%d",m[n-1]); for(i = 0; i < n - 1; i++) printf(" %d",m[i]); printf("\n"); delete[] m; return 0; }
Java реалізація
import java.util.*; public class Main { public static void main(String[] args) { Scanner con = new Scanner(System.in); int n = con.nextInt(); int m[] = new int[n]; for(int i = 0; i < n; i++) m[i] = con.nextInt(); System.out.print(m[n-1]); for(int i = 0; i < n - 1; i++) System.out.print(" " + m[i]); System.out.println(); con.close(); } }
Python реалізація
n = int(input()) v = list(map(int, input().split())) v = v[-1:] + v[:-1] for num in v: print(num, end=" ") print()