B1008 数组元素循环右移问题 【思路】

思路:

  • 题目中虽然给出了很多限制条件,例如不允许使用另外的数组,又要考虑移动的次数要少,但实际上可以不管过程,直接输出答案即可。

  • 首先需要注意题目没给出M最大值,因此不能直接认为M<N,所以需要这步:M=M%N。

  • 在得到新的M后直接输出从N-M号元素到N-1元素,再输出0号到N-M-1号元素即可。

#include <iostream>
using namespace std;

int main(int argc, char** argv) {
    
    
	int n, m;
	int a[101];
	int count = 0;
	cin >> n >> m;
	
	for(int i = 0; i < n; i++){
    
    
		scanf("%d", &a[i]);
	}
	
	m = m % n;
	
	for(int i = n - m; i < n; i++){
    
    
		cout << a[i];
		count++;
		if(count < n){
    
    
			cout << " ";
		}
	}
	
	for(int i = 0; i < n - m; i++){
    
    
		cout << a[i];
		count++;
		if(count < n){
    
    
			cout << " ";
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/alovelypeach/article/details/113785455
今日推荐