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

隨筆-167  評論-8  文章-0  trackbacks-0
無論是用鏈表實現還是用數組實現都有一個共同點:要模擬整個游戲過程,不僅程序寫起來比較煩,而且時間復雜度高達O(nm),當n,m非常大(例如上百萬,上千萬)的時候,幾乎是沒有辦法在短時間內出結果的。我們注意到原問題僅僅是要求出最后的勝利者的序號,而不是要讀者模擬整個過程。因此如果要追求效率,就要打破常規,實施一點數學策略。

為了討論方便,先把問題稍微改變一下,并不影響原意:
問題描述:n個人(編號0~(n-1)),從0開始報數,報到(m-1)的退出,剩下的人繼續從0開始報數。求勝利者的編號。

我們知道第一個人(編號一定是m%n-1) 出列之后,剩下的n-1個人組成了一個新的約瑟夫環(以編號為k=m%n的人開始):

  k  k+1  k+2  ... n-2, n-1, 0, 1, 2, ... k-2并且從k開始報0。

現在我們把他們的編號做一下轉換:

k     --> 0

k+1   --> 1

k+2   --> 2

...

...

k-2   --> n-2

k-1   --> n-1

變換后就完完全全成為了(n-1)個人報數的子問題,假如我們知道這個子問題的解:例如x是最終的勝利者,那么根據上面這個表把這個x變回去不剛好就是n個人情況的解嗎?!!變回去的公式很簡單,相信大家都可以推出來:x'=(x+k)%n

如何知道(n-1)個人報數的問題的解?對,只要知道(n-2)個人的解就行了。(n-2)個人的解呢?當然是先求(n-3)的情況 ---- 這顯然就是一個倒推問題!好了,思路出來了,下面寫遞推公式:

令f[i]表示i個人玩游戲報m退出最后勝利者的編號,最后的結果自然是f[n]

遞推公式

f[1]=0;

f[i]=(f[i-1]+m)%i;  (i>1)

有了這個公式,我們要做的就是從1-n順序算出f[i]的數值,最后結果是f[n]。因為實際生活中編號總是從1開始,我們輸出f[n]+1

由于是逐級遞推,不需要保存每個f[i],程序也是異常簡單:

#include <stdio.h>

int main(){

  int n, m, i, s=0;

  printf ("N M = "); scanf("%d%d", &n, &m);

  for (i=2; i<=n; i++) s=(s+m)%i;

  printf ("The winner is %d\n", s+1);

}

這個算法的時間復雜度為O(n),相對于模擬算法已經有了很大的提高。算n,m等于一百萬,一千萬的情況不是問題了。可見,適當地運用數學策略,不僅可以讓編程變得簡單,而且往往會成倍地提高算法執行效率。

int josefus(int n,int m) {
    int l=0,c;
    for(c=1;c<=n;c++)
        l=(l+m-1)%c+1;
    return l;
}

經典解法:
n個人圍成一圈,從1數到m,從第k個人開始數起:
typedef struct LNode
{
    
int data;
    
struct LNode *link;
}
LNode, *LinkList;

void JosephusRing3(int n, int k, int m)
{
    LinkList p,r,curr;
    p 
= (LinkList)malloc(sizeof(LNode));
    p
->data = 1;
    p
->link = p;
    curr 
= p;

    
for (int i=2; i<n+1++i)
    
{
        LinkList t 
= (LinkList)malloc(sizeof(LNode));
        t
->data = i;
        t
->link = curr->link;
        curr
->link = t;
        curr 
= t;
    }


    
while(--k)
    
{
        p
=p->link;
    }


    
while(n--)
    
{
        
for(int i=m; --i; r=p, p=p->link)
        
{
        }

        r
->link = p->link;
        cout
<<"p->data = "<<p->data<<endl;
        free(p);
        p 
= r->link;
    }

}

posted on 2010-09-11 14:56 老馬驛站 閱讀(307) 評論(0)  編輯 收藏 引用 所屬分類: c++algorithm
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久青草欧美一区二区三区| 亚洲午夜一区二区三区| 久久久久久久久岛国免费| 狠狠色狠狠色综合日日91app| 久久精品99| 老司机午夜精品| 日韩视频一区二区| 亚洲天堂激情| 国内精品免费在线观看| 免费短视频成人日韩| 欧美激情精品久久久久久黑人 | 欧美人成免费网站| 99国产精品久久久久久久久久 | 亚洲午夜激情网页| 国产日韩欧美综合| 女女同性精品视频| 欧美日韩在线一二三| 欧美一区二区三区免费视| 久久人人看视频| 亚洲天堂第二页| 久久久久久久久岛国免费| 亚洲精品在线看| 性色一区二区三区| 亚洲人成绝费网站色www| 一区二区毛片| 亚洲激情欧美| 亚洲一区免费在线观看| 亚洲高清在线视频| 亚洲欧美日韩国产一区二区| 亚洲高清视频的网址| 亚洲综合电影| 亚洲精品之草原avav久久| 亚洲男女自偷自拍| 99re6热在线精品视频播放速度| 午夜欧美理论片| 亚洲免费电影在线| 久久精选视频| 亚洲欧美日韩在线不卡| 欧美18av| 久久综合给合久久狠狠色 | 欧美精品一区在线发布| 久久久久久久一区| 国产精品久久久久7777婷婷| 亚洲国产成人在线| 国产在线一区二区三区四区| aa国产精品| 亚洲国产一区二区视频| 久久精品91久久香蕉加勒比| 亚洲性线免费观看视频成熟| 女女同性女同一区二区三区91| 久久国内精品自在自线400部| 欧美三区在线观看| 亚洲国产精品国自产拍av秋霞| 国产午夜亚洲精品不卡| 亚洲视频在线二区| 亚洲特级毛片| 欧美日韩午夜在线视频| 亚洲欧洲中文日韩久久av乱码| 伊伊综合在线| 久久久久国内| 久久在线视频在线| 狠狠入ady亚洲精品| 亚洲欧美国产77777| 午夜欧美大尺度福利影院在线看| 欧美日韩国产首页| 一本大道久久精品懂色aⅴ| 在线视频你懂得一区二区三区| 欧美久久久久久久久| 亚洲二区精品| 亚洲美女毛片| 欧美精品xxxxbbbb| av成人免费在线| 亚洲网站视频福利| 国产精品一区二区三区久久久| 亚洲女与黑人做爰| 久久国产精品网站| 伊人久久亚洲美女图片| 久久婷婷久久| 亚洲人成网站精品片在线观看 | 精品91视频| 麻豆成人小视频| 亚洲福利在线观看| 亚洲午夜在线观看视频在线| 国产精品久久久久999| 亚洲欧美在线磁力| 美女免费视频一区| 日韩午夜电影av| 国产精品视频免费在线观看| 欧美一区在线直播| 亚洲第一精品电影| 亚洲一二三区在线观看| 国产精品亚洲综合| 美女精品在线观看| 一区二区三区福利| 久久久久在线| 日韩视频亚洲视频| 国产精品自在线| 久久一区国产| 夜夜嗨av色综合久久久综合网| 欧美一区二区女人| 在线精品亚洲| 欧美日韩福利| 久久狠狠亚洲综合| 亚洲每日在线| 免费视频最近日韩| 亚洲尤物在线视频观看| 亚洲高清激情| 国产精品少妇自拍| 欧美肥婆bbw| 小处雏高清一区二区三区| 亚洲国产99精品国自产| 欧美中在线观看| 亚洲日本中文| 狠狠噜噜久久| 国产精品人人做人人爽| 欧美国产日韩视频| 久久久久国产精品www| 一区二区冒白浆视频| 欧美成人国产一区二区| 久久国产免费看| 亚洲视频免费在线| 亚洲清纯自拍| 在线国产日韩| 国产一区免费视频| 欧美色视频日本高清在线观看| 麻豆freexxxx性91精品| 欧美在线视频网站| 亚洲五月婷婷| 亚洲日韩成人| 亚洲国产99| 欧美激情一区二区三区蜜桃视频 | 亚洲欧洲日韩综合二区| 国产一区三区三区| 国产精品美女视频网站| 欧美日本一区二区高清播放视频| 久久久精品一区| 欧美一区二区福利在线| 一本综合精品| 中文亚洲欧美| 亚洲视频在线播放| 在线视频亚洲一区| 亚洲手机在线| 亚洲影院色在线观看免费| 在线视频一区观看| 亚洲午夜未删减在线观看| 亚洲天堂av高清| 亚洲在线观看免费| 午夜宅男久久久| 久久av最新网址| 久久久久久久综合| 免费欧美在线视频| 欧美激情女人20p| 欧美精品久久99| 欧美视频一区二区在线观看| 国产精品成人一区| 国产精品网站一区| 韩国免费一区| 在线精品亚洲| 一区二区三区国产精品| 亚洲天堂网在线观看| 亚洲欧美日韩爽爽影院| 欧美在线视频不卡| 麻豆av福利av久久av| 女人天堂亚洲aⅴ在线观看| 亚洲第一精品影视| 一区二区三区www| 亚洲欧美在线高清| 蜜桃av一区二区| 欧美午夜剧场| 好吊日精品视频| 亚洲美女尤物影院| 亚洲女优在线| 欧美成人福利视频| 一二三区精品福利视频| 久久精品日韩欧美| 欧美激情自拍| 国产欧美日本| 亚洲免费观看高清完整版在线观看熊 | 国产精品啊啊啊| 黄色亚洲大片免费在线观看| 最新国产拍偷乱拍精品| 亚洲欧美综合一区| 欧美α欧美αv大片| 夜色激情一区二区| 久久亚洲捆绑美女| 国产精品美女久久久久aⅴ国产馆| 国产综合婷婷| 亚洲无玛一区| 欧美国产激情二区三区| 亚洲午夜一区| 欧美日本韩国一区二区三区| 国产欧美另类| 中日韩高清电影网| 美女视频黄 久久| 亚洲已满18点击进入久久| 欧美成人午夜激情视频| 国内精品模特av私拍在线观看| 亚洲视频精选在线| 91久久精品国产91性色tv| 欧美一区在线视频|