1008. 数组元素循环右移问题 (20): 宏定义 new 相关知识巩固

 1 #include<iostream>
 2 using namespace std;
 3 #define swap(a,b)  {a^= b; b^=a; a^=b;}// 原来还可以这样定义宏
 4 
 5 void RightShift( int *Array, int N, int M )
 6 {
 7     int i, j;
 8     if(M>0 && M!=N) //M==0 || M==N 时不用循环右移
 9      {
10           for( i=0, j=N-1; i<j; i++, j-- )
11             swap(Array[i],Array[j]);
12 
13           for( i=0, j=M-1; i<j; i++, j-- )
14             swap(Array[i],Array[j]);
15 
16           for( i=M, j=N-1; i<j; i++, j-- )
17             swap(Array[i],Array[j]);
18      }
19 }
20 
21 int main()
22 {
23     int N, M;
24     while( cin>>N>>M )
25     {
26         //if( N>100||N<1||M<0 )  continue;
27         M%=N;
28         int *a;
29         a = new int[N];            //不要忘了 数组空间
30         for( int i=0; i<N; i++ )
31             cin>>a[i];
32         RightShift( a, N, M );
33         for( int i=0; i<N-1; i++)
34             cout<<a[i]<< ;
35         cout<<a[N-1]<<endl;;
36     }
37     return 0;
38 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。