當(dāng)前位置:
首頁 >
极高效代码(C语言):1008 数组元素循环右移问题 (20分)
發(fā)布時(shí)間:2024/2/28
35
豆豆
生活随笔
收集整理的這篇文章主要介紹了
极高效代码(C语言):1008 数组元素循环右移问题 (20分)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
立志用更少的代碼做更高效的表達(dá)
Pat乙級最優(yōu)化代碼+題解+分析匯總——>傳送門
一個(gè)數(shù)組A中存有N(>0)個(gè)整數(shù),在不允許使用另外數(shù)組的前提下,將每個(gè)整數(shù)循環(huán)向右移M(≥0)個(gè)位置,即將A中的數(shù)據(jù)由
(最后M個(gè)數(shù)循環(huán)移至最前面的M個(gè)位置)。如果需要考慮程序移動數(shù)據(jù)的次數(shù)盡量少,要如何設(shè)計(jì)移動的方法?
輸入格式:
每個(gè)輸入包含一個(gè)測試用例,第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
注意:M可能大于N,因此要進(jìn)行取余運(yùn)算。
代碼展示
#include<stdio.h> int main(){int N,M; scanf("%d%d",&N,&M);int t[N]; for(int i=0;i<N;i++) scanf("%d",&t[i]);if(M>=N) M%=N;for(int i=0;i<M;++i){//需要移動M次int temp=t[N-M+i];//保存到臨時(shí)變量for(int j=N-M+i;j>i;--j) t[j]=t[j-1];t[i]=temp;//將保存的臨時(shí)變量賦值到數(shù)組中}for(int i=0;i<N;++i)printf("%s%d",i>0?" ":"",t[i]);return 0; }每日一句
零星的變好,最后也會如星河般閃耀。
總結(jié)
以上是生活随笔為你收集整理的极高效代码(C语言):1008 数组元素循环右移问题 (20分)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 满分最优解法:1007 素数对猜想 (2
- 下一篇: 有一个OEM制造商代理做HP笔记本电脑(