PAT1008右移数组
第一次部分通过:
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(){
int N,M;
cin>>N>>M;
int a[N];
for(int i=0;i<N;i++){
cin>>a[i];
}
//for(int i = 0; i < N; i++)
//{
// cout<<a[i]<<" ";
//}
int temp[N];
for(int i=0;i<M;i++){
temp[i]=a[N-M+i];
}
int k=0;
for(int i=M;i<N;i++){
temp[i]=a[k];
k++;
}
for(int i=0;i<N-1;i++){
cout<<temp[i]<<" ";
}
cout<<temp[N-1];
system("pause");
return 0;
}
后来找到原因,给定的M并没有规定一定小于N,首先要对M进行修正。
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(){
int N,M;
cin>>N>>M;
M=M % N; //修正M
int a[N+1];
for(int i=0;i<N;i++){
cin>>a[i];
}
int temp[N+1];
for(int i=0;i<M;i++){
temp[i]=a[N-M+i];
}
int k=0;
for(int i=M;i<N;i++){
temp[i]=a[k];
k++;
}
for(int i=0;i<N;i++){
cout<<temp[i];
if(i<N-1){
cout<<" ";
}
}
system("pause");
return 0;
}
AC