C++ 1008 数组元素循环右移问题 (20)(20 分)

思路:

在输入的时候就判断移动之后每个元素的位置,直接输入到指定位置之后输出。

位置变换对应关系:

初始   变化后

0    N-M

1    N-M+1

2    N-M+2

...

...

M-1     N-1

-----------------------

M         0

M+1     1

...

...

N-1    N-M-1

注意点

1:

由于并没有说明M<N,故应该确定其真实移动位数(N次一个循环)

2:注意中英文括号(编程时括号使用的中文,一开始没检查出来,花了好长时间),报错形式如下

#include<iostream>
using namespace std;
int main()
{
  int n,m;
  cin >> n >> m;
  int a[n];
  m %= n;
  for (int i = m; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < m; i++) {
    cin >> a[i];
    }
  for (int i = 0; i < n; i++) {
    cout << a[i];
    if (i != n - 1) 
      cout << " ";
  }
  return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_36122764/article/details/82056428