大陈


私信TA

用户名:15362748646

访问量:613

签 名:

等  级
排  名 9584
经  验 1088
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 电子科技大学中山学院
专  业

  自我简介:

解题思路:我们看一下输入数组与输出数组的区别,发现每个数据仍然是按照顺序输出的,找到输出的规律

正常输出是a[0],a[1].......a[n-1]

按照题意是a[n-m],a[n-m+1]......a[n],a[0],a[1],......a[n-m-1]

找到规律for(i= 0;i<n;i++)    cout<<a[(i+n-m)%n]<<" ";即可

因为是对n求余,所以小括号中的范围正好是在0到n-1之间



注意事项:    输出规律n-m,n-m+1,.......n-1,0,1,....n-m-1;

此处默认n-m是大于0的,前面%n的好处在这里也体现出来了,就算m过大过着过小,%n都能够保证它还是在0到n-1之间
第一次写解析,有哪里不好的,还请多多指教,谢谢
参考代码:

#include"iostream"

using namespace std;

#define MAX 1000

void putin(int a[],int n) //输入数组

{

for (int i = 0; i < n; i++)

cin >> a[i];

}

void putout(int a[], int n, int m) //输出数组

{

for (int i = 0; i < n; i++)

cout << a[(i + n - m) % n] << " "; //0<=(i+n-m)%n < n

}

int main()

{

int arr[MAX], n, m;

cin >> n;

putin(arr,n);

cin >> m;

putout(arr, n, m);

return 0;

}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区