程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 九度OJ;題目1146:Flipping Pancake

九度OJ;題目1146:Flipping Pancake

編輯:關於C++

題目鏈接地址:http://ac.jobdu.com/problem.php?pid=1146

轉載請注明本文地址http://blog.csdn.net/yangnanhai93/article/details/42014265

因為問題只要求2n-3次,並沒有別的要求,所以最簡單一個思想就是沒一次循環完成一個目標就是把當前最大的放到最後,那麼第一步就是先經過旋轉把當前最大的放在數組最前面,第二步就是旋轉到對應位置

#include 
using namespace std;
void change(int num,int *A,int m)
{
    int left=1,tmp;
    while(left=1;i--)//找最大的;
        {
            if(A[i]==i)//如果已經在最後了,那麼就不需要旋轉;
                continue;
            if(A[1]!=i)//如果目前最大的不在最前,則需要旋轉一次,把最大的放到第一個;
            {
                for(int j=2;j<=num;j++)
                {
                    if(A[j]==i)
                    {
                        change(num,A,j);
                        //display(A,num);
                        B[index++]=j;
                    }
                }
            }
            change(num,A,i);
            //display(A,num);
            B[index++]=i;
        }
        printf("%d",index);
        for (int i=0;i

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved