【PAT乙级】1008 数组元素循环右移问题 (20 分)
生活随笔
收集整理的這篇文章主要介紹了
【PAT乙级】1008 数组元素循环右移问题 (20 分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://pintia.cn/problem-sets/994805260223102976/problems/994805316250615808
方法一: 用一個數組保存移動動后的數組
#include<cstdio> #include<iostream> using namespace std; int a[1000]; int b[1000]; int main(void) {int n,m;while(cin>>n>>m){for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<n;i++) b[(i+m)%n]=a[i];for(int i=0;i<n;i++) {cout<<b[i];if(i!=n-1) cout<<" ";}cout<<endl;}return 0; }方法二: 用隊列模擬
#include<cstdio> #include<iostream> #include<queue> using namespace std; int main(void) {int n,m; cin>>n>>m;deque<int> q;for(int i=0;i<n;i++) {int number; cin>>number;q.push_back(number);}while(m--){int number=q.back();q.pop_back();q.push_front(number);}while(q.size()>1) cout<<q.front()<<" ",q.pop_front();cout<<q.front();return 0; } #include<cstdio> #include<iostream> #include<queue> using namespace std; deque<int> q; int n,m; int main(void) {cin>>n>>m;for(int i=0;i<n;i++){int x; cin>>x;q.push_back(x);}while(m--){int temp=q.back(); q.pop_back();q.push_front(temp);}for(auto t=q.begin();t!=q.end();t++){cout<<*t;if(t+1!=q.end()) cout<<" ";}return 0; }第三種方法:
#include<iostream> using namespace std; int main(){int N,M;int num[100];scanf("%d %d",&N,&M);M=M%N;//防止越界for(int i=0;i<N;i++){scanf("%d",&num[i]);}for(int i=N-M;i<N;i++){printf("%d ",num[i]);}for(int i=0;i<N-M;i++){if(i!=0) printf(" ");printf("%d",num[i]);}return 0; }總結
以上是生活随笔為你收集整理的【PAT乙级】1008 数组元素循环右移问题 (20 分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【PAT乙级】1007 素数对猜想 (2
- 下一篇: 【PAT乙级】1009 说反话 (20