青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 33,  comments - 33,  trackbacks - 0
STL有一個函數叫next_ermutation,是得出當前排列的下一個排列,數列P[0..n-1](P[i] > P[j]當n>i>j>=0)為最小的排列,然后按照一般數字的排列比較進行排列,就是說該排列的下一個排列比這個排列大,最后的當然是P*[0..n-1](P*[i] < P*[j]當n>i>j>=0)
例如 1 2 3 4,最小的是1 2 3 4,下一個是1 2 4 3.。。。最大是4 3 2 1了。
怎么得出當前排列的下一個排列呢?
定義n為數組P【0,n-1】的長度
下面要考慮的問題,是如何從一個已知的排列P = p1p2…pn,找到它的下一個排列
Q = q1q2…qn。我們要讓排列從小到大生成,簡單說,要讓排列的趨勢從P[0..n-1](P[i] > P[j]當n>i>j>=0)到P*[0..n-1](P*[i] < P*[j]當n>i>j>=0)。
我們可以結合十進制的大小比較來理解。以下以1 3 4 2為例子來說

1.首先從低位找起,找出比高位大的第一個數的位置,定義i為這個位置。(想一下就知道了)若找不到這樣的P[i],說明我們已經找到最后一個全排列,可以返回了。
1 3 4 2 --> 4比3 大,這個位置是第2位(1為第0位,3 為第1位),這時 i = 2

2.再在區間[i,n-1]中查找比P[i-1]大的最小的數。
這個也很容易理解,從例子中看出,這個最小的數是4
然后交換兩者,那么現在的數組是1 4 3 2

3.現在還不是最小的數,因為從第一步的查找,我們有P[i]>P[i+1]> … >P[n-1],否則查找在i~n就會停下來了。這樣的一個排列顯然不是最小的。實際上,原來的P[i...n-1],已經是這一部分最大的一個排列了。但我們現在換了最高位P[i-1],因此要讓后面的數字變的最小。方法很簡單,根據上面的推理,我們只須將P[i...n-1]的數列倒置即可(最大的排列倒置就變成了最小的排列)。
回到例子,1 4 3 2 --> 14 2 3得到答案

看完了分析,現在做一題OJ題目
POJ 題目http://poj.org/problem?id=1833

解答
#include <stdio.h>
#include 
<algorithm>
using namespace std;
int A[1200];

inline 
void Swap(int &a,int &b)
{
    
int tmp = a;
    a 
= b;
    b 
= tmp;
}


void nextPermutation(int *_p,int _n)
{
    
//1.從后向前找 查找不符合趨勢的
    int i = _n-1;
    
while(i > 0 && _p[i - 1> _p[i])
        
--i;
    
if(i == 0)//已到最后
    {
        sort(_p,_p
+_n);
        
return ;
    }

    
//2.查找【i,n-1】中大于p[i-1]的最小數
    int k = i;//p[i]必大于p[i-1]
    for(int j = i; j <= _n-1++j)
    
{
        
if(_p[j] > _p[i-1&& _p[j] < _p[k])
        
{
            k 
= j;
        }

    }


    Swap(_p[k],_p[i
-1]);

    
//3.因為從第一步得【i,n-1】是遞減的,故第2步中反轉p[k],p[i-1]后要把這個區間反轉
    for(int j = i,k = _n-1;j < k; ++j,--k)
    
{
        Swap(_p[j],_p[k]);
    }

}


void Test()
{
    
int n,m;
    scanf(
"%d %d",&n,&m);
    
for(int i = 0; i < n; ++i)
        scanf(
"%d",&A[i]);
    
for(int i = 0; i < m ; ++i)
        nextPermutation(A,n);
    printf(
"%d",A[0]);
    
for(int i = 1; i < n; ++i)
    
{
        printf(
" %d",A[i]);
    }

    printf(
"\n");
}


int main()
{
    
int tc;
    scanf(
"%d",&tc);
    
for(int i = 0; i < tc; ++i)
    
{
        Test();
    }

    
return 0;
}

posted on 2011-01-27 16:50 bennycen 閱讀(498) 評論(1)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区.www| 久久精品国产综合| 亚洲免费av片| 国产精品久久久久久一区二区三区 | 黄网站色欧美视频| 国产精品三级久久久久久电影| 在线视频亚洲| 午夜欧美理论片| 黄色一区二区三区| 亚洲精品一二三| 国产区日韩欧美| 牛牛精品成人免费视频| 欧美影院一区| 狼人天天伊人久久| 亚洲最黄网站| 欧美在线视频一区二区| 亚洲福利小视频| 亚洲视频一区二区在线观看| 国产一区日韩欧美| 亚洲精品乱码| 国产亚洲精品久久久久久| 欧美成人性网| 国产精品欧美日韩一区二区| 蜜桃伊人久久| 国产精品久久久久一区| 久久综合成人精品亚洲另类欧美| 男女激情久久| 欧美一区在线看| 欧美日本三级| 免费一级欧美片在线观看| 欧美私人啪啪vps| 欧美成人国产va精品日本一级| 国产精品成人va在线观看| 免费成人av在线| 国产精品推荐精品| 亚洲精品乱码久久久久久按摩观 | 免费视频一区| 久久久久国产精品一区| 欧美视频在线观看一区| 欧美激情久久久| 狠狠干综合网| 欧美一区二区啪啪| 午夜亚洲性色视频| 欧美日韩一区二区高清| 男人的天堂亚洲| 国产一区二区三区四区在线观看| 在线亚洲伦理| 在线亚洲自拍| 欧美日韩国产影院| 91久久久精品| 亚洲精品网址在线观看| 久久综合伊人77777麻豆| 久久精品日韩欧美| 国产日韩精品电影| 午夜精品网站| 久久精品国产99| 国产视频一区二区在线观看| 中国成人黄色视屏| 亚洲一区二区三区影院| 欧美理论在线播放| a4yy欧美一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 久久手机精品视频| 欧美a级片一区| 亚洲国产另类精品专区| 欧美99久久| 亚洲精品美女在线观看播放| 亚洲人成亚洲人成在线观看| 男男成人高潮片免费网站| 国产视频一区在线| 久久久成人网| 99热免费精品| 国产精品国产三级国产| 亚洲欧美国产精品桃花| 久久九九国产精品| 在线观看视频亚洲| 欧美99在线视频观看| 99re热这里只有精品免费视频| 一区二区三区毛片| 国产精品女主播在线观看| 新67194成人永久网站| 久久手机精品视频| 亚洲欧洲日本国产| 国产精品无码永久免费888| 午夜精品国产| 欧美成黄导航| 亚洲图片欧美日产| 国产在线视频欧美一区二区三区| 久久久久在线| avtt综合网| 久久偷窥视频| 亚洲天堂久久| 极品尤物久久久av免费看| 欧美激情精品久久久六区热门 | 欧美久久一级| 亚洲欧美成人在线| 亚洲电影av| 欧美专区在线观看| 99热这里只有精品8| 国产欧美精品一区二区三区介绍| 久热re这里精品视频在线6| 亚洲美女视频网| 久久亚洲风情| 亚洲自拍都市欧美小说| 亚洲国产日韩综合一区| 国产麻豆一精品一av一免费| 欧美国产日产韩国视频| 欧美一级久久| 在线亚洲高清视频| 91久久久一线二线三线品牌| 久久国产高清| 亚洲欧美精品在线观看| 亚洲国产一区二区三区在线播| 国产老肥熟一区二区三区| 欧美激情精品久久久久久大尺度| 欧美专区在线观看| 99视频在线观看一区三区| 欧美aⅴ一区二区三区视频| 欧美亚洲在线观看| 亚洲天堂偷拍| aa级大片欧美| 日韩一级免费| 亚洲精品免费网站| 亚洲高清久久| 黄色国产精品一区二区三区| 国产精品久久久久国产a级| 欧美日韩福利在线观看| 美女被久久久| 麻豆乱码国产一区二区三区| 欧美一区二区视频97| 亚洲一区二区三区四区五区黄 | 欧美激情精品久久久久久免费印度 | 亚洲靠逼com| 91久久夜色精品国产网站| 欧美激情精品久久久| 久久尤物电影视频在线观看| 久久精品人人爽| 久久久久久久97| 亚洲日韩第九十九页| 极品日韩av| 91久久亚洲| 亚洲精选在线| 一本大道久久a久久精品综合| 亚洲乱码精品一二三四区日韩在线| 亚洲国产精品成人精品| 亚洲国产日韩一区| 99热这里只有精品8| 亚洲一区二区成人在线观看| 亚洲伊人第一页| 香蕉免费一区二区三区在线观看| 午夜精品久久一牛影视| 亚洲欧美综合国产精品一区| 亚洲欧美制服中文字幕| 午夜精品久久| 久久精品成人一区二区三区 | 午夜在线a亚洲v天堂网2018| 欧美一区久久| 欧美黄色网络| 99精品视频免费观看视频| 亚洲天堂偷拍| 久久九九热re6这里有精品| 榴莲视频成人在线观看| 亚洲一区在线看| 先锋影音国产精品| 欧美一级在线亚洲天堂| 久久精品99国产精品酒店日本| 午夜精品久久久久久久99水蜜桃| 欧美在线观看视频在线| 欧美+亚洲+精品+三区| 欧美日韩日本网| 国产日韩精品入口| 亚洲激情影院| 欧美一区二区黄色| 亚洲大胆人体视频| 亚洲网站视频| 久久只精品国产| 国产精品中文在线| 亚洲风情亚aⅴ在线发布| 亚洲视频中文字幕| 欧美成人日本| 亚洲午夜久久久| 欧美成年人视频网站| 国产欧美69| 亚洲天堂免费在线观看视频| 久久全球大尺度高清视频| 99re在线精品| 久久综合福利| 国产欧美日韩激情| 在线视频你懂得一区| 免费高清在线视频一区·| 一区二区电影免费在线观看| 久久久久久久综合色一本| 欧美亚洲成人精品| 亚洲欧洲三级| 老司机午夜精品视频| 亚洲欧美日韩精品在线| 国产精品av免费在线观看| 亚洲人午夜精品免费| 欧美freesex8一10精品| 性感少妇一区|