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

A Za, A Za, Fighting...

堅信:勤能補拙

PKU 2244 Eeny Meeny Moo

問題:
http://acm.pku.edu.cn/JudgeOnline/problem?id=2244

參考:
http://baike.baidu.com/view/213217.html?fromTaglist

思路:
從這題認識了經典的約瑟夫問題:

無論是用鏈表實現還是用數組實現都有一個共同點:要模擬整個游戲過程,不僅程序寫起來比較煩,而且時間復雜度高達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等于一百萬,一千萬的情況不是問題了。可見,適當地運用數學策略,不僅可以讓編程變得簡單,而且往往會成倍地提高算法執行效率。

代碼:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 
 5 /*
 6  * f[1] = 0
 7  * f[i] = (f[i-1]+m)%i
 8  */
 9 int
10 josephus(int n, int m)
11 {
12     int i, s = 0;
13     for(i=2; i<=n; i++
14         s = (s+m)%i;
15     return s+1;
16 }
17 
18 int
19 main(int argc, char **argv)
20 {
21     int n, m;
22     while(scanf("%d"&n)!=EOF && n!=0) {
23         m = 2;
24         /* because first cut off city 1 and then begins every mth */
25         while(josephus(n-1, m) != 1)
26             ++m;
27         printf("%d\n", m);
28     }
29 }

posted on 2010-08-18 21:02 simplyzhao 閱讀(249) 評論(0)  編輯 收藏 引用 所屬分類: G_其他

導航

<2010年9月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

統計

常用鏈接

留言簿(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>
            蜜桃久久av| 麻豆成人综合网| 国产欧美二区| 国产精品视频精品视频| 欧美日韩一区二区三区免费看 | 午夜精品一区二区三区四区| 亚洲免费视频一区二区| 欧美亚洲免费高清在线观看| 欧美一区在线看| 久久亚洲精品伦理| 欧美激情中文字幕一区二区| 欧美日韩精品免费观看视频| 国产精品一区二区三区观看| 国产亚洲亚洲| 亚洲精品视频中文字幕| 亚洲小说春色综合另类电影| 午夜精品一区二区三区在线| 久久尤物电影视频在线观看| 亚洲精华国产欧美| aaa亚洲精品一二三区| 午夜激情亚洲| 噜噜噜91成人网| 欧美日韩在线一区二区三区| 国产一区二区三区精品久久久| 亚洲国产一区二区三区a毛片| 亚洲一区二区免费视频| 久热国产精品视频| 一本一本久久a久久精品牛牛影视| 日韩一级成人av| 亚洲视频在线看| 久久婷婷国产综合国色天香| 99riav久久精品riav| 久久爱www| 欧美日韩综合在线| 亚洲国产精品欧美一二99| 亚洲尤物视频网| 老鸭窝毛片一区二区三区| 亚洲视频观看| 欧美精品一区二区蜜臀亚洲| 国产一区二区三区在线观看网站| 中文av一区特黄| 欧美高清在线播放| 午夜精品视频在线| 欧美三日本三级三级在线播放| 在线日韩av| 久久久欧美一区二区| 这里只有精品电影| 欧美男人的天堂| 亚洲精品婷婷| 欧美激情精品久久久久久免费印度 | 激情av一区二区| 欧美在线在线| 中文精品视频一区二区在线观看| 欧美v日韩v国产v| 国语精品一区| 久久久久久久久一区二区| 亚洲一级黄色| 国产精品久久久久久久久借妻| 夜夜嗨av色一区二区不卡| 欧美成人蜜桃| 免费欧美在线视频| 亚洲黄色成人网| 亚洲国产精品一区二区www| 久久久久免费视频| 在线不卡免费欧美| 老司机精品视频一区二区三区| 欧美自拍偷拍午夜视频| 国产一区999| 麻豆国产精品va在线观看不卡 | 性做久久久久久免费观看欧美| 国产精品久久久一本精品| 亚洲欧美一区在线| 欧美亚洲一区三区| 韩国av一区二区三区在线观看| 久久这里有精品视频| 久久露脸国产精品| 亚洲精品乱码| 亚洲伦理在线免费看| 欧美涩涩视频| 性欧美办公室18xxxxhd| 亚洲欧美资源在线| 久久精品欧美| 亚洲精品欧洲精品| 亚洲午夜久久久久久久久电影院| 国产午夜久久久久| 亚洲福利在线视频| 国产精品国产三级国产普通话蜜臀 | 久久视频一区| 亚洲欧洲一区二区在线播放 | 亚洲三级性片| 国产精品成人观看视频国产奇米| 欧美一区二区三区男人的天堂| 欧美一区二区三区在线播放| 亚洲国产日韩欧美在线图片| 9l视频自拍蝌蚪9l视频成人| 国内免费精品永久在线视频| 亚洲精品国产视频| 激情欧美一区| 亚洲午夜久久久久久久久电影院| 在线观看欧美日本| 亚洲夜晚福利在线观看| 亚洲福利国产精品| 亚洲性线免费观看视频成熟| 亚洲福利专区| 午夜精品久久| 在线一区观看| 巨胸喷奶水www久久久免费动漫| 亚洲视频你懂的| 久久久人人人| 亚洲欧美中文字幕| 欧美华人在线视频| 蜜臀99久久精品久久久久久软件| 国产精品二区三区四区| 亚洲第一区在线观看| 国产日韩欧美a| 中日韩美女免费视频网站在线观看| 在线看日韩欧美| 亚洲欧美资源在线| 亚洲女女女同性video| 欧美理论电影网| 欧美黑人多人双交| 在线精品视频一区二区三四| 午夜精品久久久久| 亚洲综合色噜噜狠狠| 欧美精品一卡| 最新国产成人av网站网址麻豆| 黄网动漫久久久| 欧美一区二区三区婷婷月色| 欧美在线高清| 国产精品自拍视频| 亚洲一级二级| 亚洲欧洲av一区二区三区久久| 欧美婷婷六月丁香综合色| 日韩视频一区二区三区在线播放| 亚洲美女视频网| 欧美精品在线免费观看| 亚洲精品一区在线观看| 日韩亚洲精品视频| 欧美日韩第一区日日骚| 日韩视频在线观看免费| 在线中文字幕一区| 欧美色图首页| 亚洲三级国产| 99视频一区| 欧美日韩中文字幕精品| 亚洲精品小视频| 亚洲少妇一区| 国产精品日本一区二区| 新狼窝色av性久久久久久| 久久av一区二区三区| 国产一区二区三区成人欧美日韩在线观看 | 国产精品第2页| 亚洲午夜精品国产| 欧美一区免费| 国产一区二区三区成人欧美日韩在线观看| 亚洲欧美电影在线观看| 久久精品首页| 亚洲国产成人高清精品| 欧美黄色小视频| 宅男噜噜噜66一区二区66| 久久av二区| 亚洲国产婷婷综合在线精品| 欧美日本国产| 香蕉久久国产| 亚洲黄色在线视频| 亚洲欧美另类国产| 亚洲春色另类小说| 欧美日韩亚洲激情| 亚洲欧美成人一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲免费av电影| 国产欧美一区二区视频| 欧美va天堂va视频va在线| 亚洲一级二级在线| 欧美成人伊人久久综合网| 亚洲欧美日韩一区二区在线| 亚洲国产欧美在线| 国产精品免费视频观看| 久久综合色8888| 亚洲自拍电影| 亚洲激情视频在线| 久久婷婷国产综合精品青草| 亚洲一级二级| 亚洲人成网站精品片在线观看| 国产欧美一区二区三区久久人妖| 欧美黄色一区| 久久亚洲风情| 欧美一区二区三区另类| 日韩亚洲欧美成人| 欧美电影在线播放| 久久久99精品免费观看不卡| 亚洲午夜精品网| 亚洲乱码国产乱码精品精天堂| 国产亚洲va综合人人澡精品| 欧美日本高清| 欧美激情视频在线播放| 久久综合九色综合欧美就去吻| 欧美一区不卡| 亚洲欧美日韩一区二区| 国产精品99久久久久久久女警 |