解题思路:我们看一下输入数组与输出数组的区别,发现每个数据仍然是按照顺序输出的,找到输出的规律
正常输出是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 人评分
蓝桥杯历届试题-九宫重排 (C++代码)浏览:2783 |
计算质因子 (C++代码)浏览:1644 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:596 |
蛇行矩阵 (C语言代码)浏览:753 |
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:648 |
WU-C语言程序设计教程(第三版)课后习题11.12 (C++代码)(想学链表的小伙伴可以看看)浏览:904 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:326 |
蓝桥杯历届试题-翻硬币 (C++代码)浏览:890 |
敲七 (C语言代码)浏览:2701 |
1052题解(链表操作)浏览:674 |