c_cpp 由n个元素旋转数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 由n个元素旋转数组相关的知识,希望对你有一定的参考价值。
#include <iostream>
using namespace std;
void rotateByOne(int a[], int n){
int i, temp = a[0];
for(i=0; i<n-1; i++){
a[i] = a[i+1];
}
a[i] = temp;
}
void rotate(int a[], int n, int d){
for(int i=0; i<d; i++)
rotateByOne(a, n);
}
int main() {
int t, n, d;
cin >> t;
while(t--){
cin >> n >> d;
int a[101] = {0}, temp[101]={0};
for(int i=0; i<n; i++)
cin >> a[i];
rotate(a, n, d);
for(int i=0; i<n; i++)
cout << a[i] << " ";
cout << endl;
}
return 0;
}
/*
http://ideone.com/tKPU8B
http://www.geeksforgeeks.org/array-rotation/
http://www.practice.geeksforgeeks.org/problem-page.php?pid=360
*/
#include <iostream>
using namespace std;
int main() {
// your code goes here
int t, n, d;
cin >> t;
while(t--){
cin >> n >> d;
int a[n] = {0}, temp[d]={0};
for(int i=0; i<n; i++)
cin >> a[i];
for(int i=0; i<=d; i++)
temp[i] = a[i];
int x = 0;
for(int i=d; i<n; i++)
a[x++] = a[i];
for(int i=0; i<=d; i++)
a[x++] = temp[i];
for(int i=0; i<n; i++)
cout << a[i] << " ";
cout << endl;
}
return 0;
}
/*
http://ideone.com/AuTwNV
http://www.practice.geeksforgeeks.org/problem-page.php?pid=924
*/
#include <iostream>
using namespace std;
void reverseArray(int a[], int start, int end){
int temp;
while(start < end){
temp = a[start];
a[start] = a[end];
a[end] = temp;
start++;
end--;
}
}
void rotate(int a[], int n, int d){
reverseArray(a, 0, d-1);
reverseArray(a, d, n-1);
reverseArray(a, 0, n-1);
}
int main() {
int t, n, d;
cin >> t;
while(t--){
cin >> n;
int a[101] = {0}, temp[101]={0};
for(int i=0; i<n; i++)
cin >> a[i];
cin >> d;
rotate(a, n, d);
for(int i=0; i<n; i++)
cout << a[i] << " ";
cout << endl;
}
return 0;
}
以上是关于c_cpp 由n个元素旋转数组的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 搜索已排序和旋转的数组中的元素
c_cpp 递增排序的数组(元素不重复),旋转一定长度后,求数组中最小的数。如{1,2,3,4,5,6},旋转后{4,5,6,1,2, 3},旋转后的数组最小值为1
c_cpp 使用地址偏移量包含N个元素的数组成员计算struct的大小
数组189. 旋转数组
c_cpp 用两个数组来表示所给的含有Ñ个元素的有序集S.用值[0:N]存储有序集中的元素,链接[0:N]存储有序集中元素在数组值中位置的指针(实际上使用数组模拟链表)。链路[0]指向有序集
旋转数组的最小数字