Clasa a IX-a · Tablouri unidimensionale (vectori)Read in English
Permutarea circulară la stânga în C++
În engleză: Circular shift to the left
O(n)C++1742 de linii1 exemplu
Ideea
Fiecare element se mută cu o poziție la stânga, iar primul ajunge pe ultima poziție. Salvăm v[1] într-o variabilă, mutăm restul (v[i] = v[i + 1]) și punem valoarea salvată în v[n].
Descrierea în engleză
Every element moves one position to the left, and the first one goes to the last position. We save v[1] in a variable, shift the rest (v[i] = v[i + 1]) and put the saved value in v[n].
- Complexitate
- O(n)
- Clasa
- Clasa a IX-a (Grade 9)
Exemple
Exemplul 1
Intrare
5 1 2 3 4 5
Ieșire așteptată
2 3 4 5 1
Codul C++
Codul complet, cu comentarii în română. Îl poți modifica liber și îl poți reseta oricând.
/*
* Titlu: Permutarea circulară la stânga
* Clasa: 9
* Capitol: Tablouri unidimensionale (vectori)
* Descriere: Fiecare element se mută cu o poziție la stânga, iar primul ajunge
* pe ultima poziție. Salvăm v[1] într-o variabilă, mutăm restul
* (v[i] = v[i + 1]) și punem valoarea salvată în v[n].
* Complexitate: O(n)
*
* Exemplu
* Intrare:
* 5
* 1 2 3 4 5
* Ieșire: 2 3 4 5 1
*/
#include <iostream>
using namespace std;
int v[1001];
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> v[i];
}
int primul = v[1];
for (int i = 1; i < n; i++)
{
v[i] = v[i + 1];
}
v[n] = primul;
for (int i = 1; i <= n; i++)
{
cout << v[i] << ' ';
}
cout << '\n';
return 0;
}
Rulează pe un g++ adevărat (C++17, -O2) prin Compiler Explorer. Programele trebuie să se termine repede: există o limită de timp.