日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

pat 乙级 1008 数组元素循环右移问题(C++)

發(fā)布時(shí)間:2023/12/2 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pat 乙级 1008 数组元素循环右移问题(C++) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目

一個(gè)數(shù)組A中存有N(>0)個(gè)整數(shù),在不允許使用另外數(shù)組的前提下,將每個(gè)整數(shù)循環(huán)向右移M(≥0)個(gè)位置,即將A中的數(shù)據(jù)由(A?0 A?1 ?A?N?1)變換為(A?N?M?? ??AN???1A?0A1?A?N?M?1)(最后M個(gè)數(shù)循環(huán)移至最前面的M個(gè)位置)。如果需要考慮程序移動(dòng)數(shù)據(jù)的次數(shù)盡量少,要如何設(shè)計(jì)移動(dòng)的方法?

輸入格式:

每個(gè)輸入包含一個(gè)測(cè)試用例,第1行輸入N(1≤N≤100)和M(≥0);第2行輸入N個(gè)整數(shù),之間用空格分隔。

輸出格式:

在一行中輸出循環(huán)右移M位以后的整數(shù)序列,之間用空格分隔,序列結(jié)尾不能有多余空格。

輸入樣例:

6 2
1 2 3 4 5 6

輸出樣例:

5 6 1 2 3 4

分析

  • 使用一個(gè)數(shù)組記錄下標(biāo)的變動(dòng),然后把這個(gè)數(shù)組的值傳入原數(shù)組作為下標(biāo)即可
  • 注意原數(shù)組一個(gè)元素和循環(huán)移動(dòng)超過(guò)N次的情況

AC代碼

#include<iostream> using namespace std; int main() {int i,N,M;cin>>N>>M;int a[N],b[N];for(i=0;i<N;i++){cin>>a[i];b[i]=i;}if(N==1)//只有一個(gè)元素,直接輸出,并結(jié)束程序{cout<<a[0];return 0;}if(M>=N)//循環(huán)移動(dòng)次數(shù)超過(guò)N次,等效于移動(dòng)M%N次。M=M%N;for(i=0;i<N;i++){if(i-M>=0)b[i]=i-M;elseb[i]=i-M+N;}for(i=0;i<N;i++){if(i!=N-1)cout<<a[b[i]]<<" ";else //最后個(gè)數(shù)后面沒(méi)有空格cout<<a[b[i]];}return 0; }

本題應(yīng)該是用鏈表,但是我好菜,還沒(méi)復(fù)習(xí)到那點(diǎn),先這樣做吧,過(guò)幾天補(bǔ)上用鏈表的。如果考試遇到,能做還是用正統(tǒng)方法做,不能的話,這樣也可以吧,AC就好(\doge) 。
如果本文對(duì)你有幫助,請(qǐng)給我點(diǎn)贊吧~!
有任何問(wèn)題或建議,記得評(píng)論區(qū)給我留言,感謝感謝。

更多題解
pat 乙級(jí) 題解匯總(持續(xù)更新)(C++)

總結(jié)

以上是生活随笔為你收集整理的pat 乙级 1008 数组元素循环右移问题(C++)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。