コード例 #1
0
 vector<int> pancakeSort(vector<int>& A) {
   vector<int> res;
   int len = A.size();
   for (int i = len - 1; i >= 0; i--) {
     // A[i] from [1, len], after sort, A[i] should be i + 1
     if (A[i] == i + 1) {
       // cout << i<<" continue:"<<A[i]<<" "<<i+1<<endl;
       continue;
     }
     int max_idx = 0;
     while (A[max_idx] != i + 1) { max_idx++; }
     // cout << max_idx << " "<<i + 1<<endl;
     // reserve i + 1 to head;
     reserveA(A, 0, max_idx);
     res.push_back(max_idx + 1);
     // reserve head to i
     reserveA(A, 0, i);
     res.push_back(i + 1);
   }
   // for (auto& i : A) {
     // cout<<i<<" ";
   // }
   cout<<endl;
   return res;
 }
コード例 #2
0
ファイル: main.cpp プロジェクト: RotileQ/practice
int main(void)
{
    while(scanf("%d%d",&n,&m)) {
        if(n==0&&m==0) break;

        scanf("%d%d",&x,&y);
        for(int i=0; i<n; i++) {
            scanf("%s",&str[i]);
        }

        solveA(m,n,y);  //y代表宽度
        reserveB(m,n);
        int total=solveB(n,m,x); //x代表高度

        if(x!=y) {
            reserveA(m,n);
            solveA(n,m,y);
            reserveB(n,m);
            total+=solveB(m,n,x);
        }
        printf("%d\n",total);
        //free memory
    }
    return 0;
}