절강대학 PAT 비행기 문제 해석의 1008.그룹 원소 순환 오른쪽 이동 문제 (20)

1438 단어
1008. 그룹 원소 순환 오른쪽 이동 문제(20)
시간 제한
400 ms
메모리 제한
32000 kB
코드 길이 제한
8000 B
판정 절차
Standard
하나의 배열 A에는 N(N>0)개의 정수가 저장되어 있으며, 다른 배열을 사용할 수 없는 전제에서 각 정수의 순환을 M(M>=0)의 위치로 오른쪽으로 옮기고, A의 데이터를 (A0 A1...AN-1)에서 (AN-M...AN-1...AN-1 A0 A1...AN-M-1) (마지막 M의 순환을 가장 앞의 M의 위치로 옮깁니다.만약 프로그램이 데이터를 이동하는 횟수를 최대한 적게 고려해야 한다면 어떻게 이동하는 방법을 설계해야 합니까?
입력 형식: 입력마다 테스트 용례를 포함하고 첫 번째 줄은 N(1<=N<=100), M(M>=0)을 입력한다.두 번째 행은 공백으로 구분된 N개의 정수를 입력합니다.
출력 형식: 한 줄에서 M 비트를 오른쪽으로 이동한 후의 정수 서열을 출력합니다. 간격을 공백으로 구분하고, 서열 끝에 여분의 공백이 있을 수 없습니다.
샘플 입력:
6 2
1 2 3 4 5 6

출력 예제:
5 6 1 2 3 4
 
#include<iostream>
#include <list>
using namespace std;


int main()
{
  int M,N,t,i;
  bool flag=false;
  list<int> mylist;
  list<int>::iterator it;
  cin>>M>>N;

  while(M--)
  {
    cin>>t;
    mylist.push_back(t);
  }

  while(N--)
  {
    t = mylist.back();
    mylist.pop_back();
    mylist.push_front(t);
  }
  for (it=mylist.begin();it!=mylist.end();it++)
  {
    if (flag)
    cout<<" ";
    else
    flag=true;

    cout<<*it;
  }
  cout<<endl;
  //system("pause");
  return 0;
}

좋은 웹페이지 즐겨찾기