怀柔手机网站建设,营销型网站关键词多少为好,买东西最便宜的软件,餐饮业手机php网站题目
一个数组A中存有N#xff08;0#xff09;个整数#xff0c;在不允许使用另外数组的前提下#xff0c;将每个整数循环向右移M#xff08;≥0#xff09;个位置#xff0c;即将A中的数据由#xff08;A0 A1 ⋯AN−1#xff09;变换为#xff08;AN−…题目
一个数组A中存有N0个整数在不允许使用另外数组的前提下将每个整数循环向右移M≥0个位置即将A中的数据由A0 A1 ⋯AN−1变换为AN−M ⋯AN−1A0A1⋯AN−M−1最后M个数循环移至最前面的M个位置。如果需要考虑程序移动数据的次数尽量少要如何设计移动的方法
输入格式:
每个输入包含一个测试用例第1行输入N1≤N≤100和M≥0第2行输入N个整数之间用空格分隔。
输出格式:
在一行中输出循环右移M位以后的整数序列之间用空格分隔序列结尾不能有多余空格。
输入样例: 6 2 1 2 3 4 5 6 输出样例: 5 6 1 2 3 4 分析
使用一个数组记录下标的变动然后把这个数组的值传入原数组作为下标即可注意原数组一个元素和循环移动超过N次的情况
AC代码
#includeiostream
using namespace std;
int main()
{int i,N,M;cinNM;int a[N],b[N];for(i0;iN;i){cina[i];b[i]i;}if(N1)//只有一个元素直接输出并结束程序{couta[0];return 0;}if(MN)//循环移动次数超过N次等效于移动M%N次。MM%N;for(i0;iN;i){if(i-M0)b[i]i-M;elseb[i]i-MN;}for(i0;iN;i){if(i!N-1)couta[b[i]] ;else //最后个数后面没有空格couta[b[i]];}return 0;
}本题应该是用链表但是我好菜还没复习到那点先这样做吧过几天补上用链表的。如果考试遇到能做还是用正统方法做不能的话这样也可以吧AC就好\doge 。 如果本文对你有帮助请给我点赞吧~ 有任何问题或建议记得评论区给我留言感谢感谢。
更多题解 pat 乙级 题解汇总持续更新C