<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 33,  comments - 70,  trackbacks - 0
    問題:約瑟夫環
    ?有編號從1到N的N個人坐成一圈報數,報到M的人出局,下一位再從1開始,
    ?如此持續,直止剩下一位為止,報告此人的編號X。輸入N,M,求出X。

    約瑟夫環算法(循環鏈表解決).現在老師出的題還是那么....... 呵呵?. 留個念像吧

    java實現:
    public?class?Josephus?{

    ????
    public?static?void?main(String[]?args)?{
    ????????
    if(args.length<2){
    ????????????System.out.println(
    "Input?N?and?M.");
    ????????????
    return;
    ????????}

    ????????
    int?n?=?Integer.parseInt(args[0]);
    ????????
    int?m?=?Integer.parseInt(args[1]);
    ????????
    int?point=0,number=1;
    ????????List
    <Integer>?list?=?new?ArrayList<Integer>();
    ????????
    for(int?i=1;i<=n;?i++){
    ????????????
    //初始化鏈表
    ????????????list.add(i);
    ????????}


    ????????
    while(list.size()>1){
    ????????????
    if(number%m==0){
    ????????????????list.remove(point);
    ????????????????
    --point;
    ????????????}

    ????????????
    ++point;//指針后移
    ????????????++number;
    ????????????
    if(point>list.size()-1){
    ????????????????
    //指針越界重新開始
    ????????????????point=0;
    ????????????}

    ????????}

    ????????

    ????????System.out.println(list.get(
    0));
    ????????
    ????}

    }

    ?

    c實現:

    #include?<stdio.h>
    struct?node
    {
    ??
    int?v;
    ??struct?node?
    *next;
    }
    *p,*head,h;?//head是頭指針,h是頭結點

    main()
    {
    ??
    int?n,m;
    ??
    int?i;
    ??puts(
    "請輸入人數n和報數上限m?:");
    ??scanf(
    "%d%d",&n,&m);

    ??h.next
    =NULL;?//頭結點的next為空
    ??head=&h;?????//頭指針指向頭結點
    ??p=head;??????//p也指向頭結點

    ??
    /*下面的循環用來建立循環鏈表*/
    ??
    for(i=1;i<=n;i++)
    ??
    {
    ????p
    ->next=(struct?node*)malloc(sizeof(struct?node));
    ????p
    =p->next;
    ????p
    ->v=i;
    ????
    if(i!=n)
    ????
    {
    ??????p
    ->next=NULL;
    ????}

    ????
    else
    ????
    {
    ??????p
    ->next=head->next;
    ????}

    ??}


    ??p
    =head;
    ??p
    =p->next;?//p指向第一個結點
    ??m%=n;//當m>n時有用
    ??while(p!=p->next)
    ??
    {
    ????
    for(i=1;i<=m-2;i++)
    ????
    {
    ??????p
    =p->next;
    ????}

    ????printf(
    "%d??",p->next->v);
    ????p
    ->next=p->next->next;
    ????p
    =p->next;
    ??}

    ??printf(
    "%d",p->v);
    }
    posted on 2006-06-07 23:37 地獄男爵(hellboys) 閱讀(13327) 評論(19)  編輯  收藏

    FeedBack:
    # re: 約瑟夫環算法(循環鏈表解決)
    2006-10-15 10:36 | shaoshuai
    挺好挺好  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2006-10-16 00:00 | doyphine
    你的程序有點問題,有待解決喲!!你自己代幾個數進去看看就知道了,我只試了C的  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2006-10-16 19:43 | 有點傻
    看不懂哦~  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2006-10-17 11:30 | 榆錢
    你的程序的密碼好像就是剛開始排列時每個人的序號,是嗎??而且你的輸出有問題,挺大的問題  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2006-10-17 11:39 | hellboys
    java的測試過,沒問題。 c的只作參考(未測試過)。  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2006-10-23 22:24 | tian
    very good Thank you very much.  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)[未登錄]
    2008-01-20 14:15 | hhh
    我也覺得,雖然不同的語言,但算法流程應該相同。可是你的呢,兩種語言都不一樣~~~  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2008-03-27 21:06 | 22
    根本就不對
    C語言的!  回復  更多評論
      
    # 約瑟夫環算法C++
    2008-05-20 17:43 | 呂起民
    enum{N = 10,M=7};
    int main(int argc, char* argv[])
    {
    char array[N] = {1,2,3,4,5,6,7,8,9,10};
    int nCount = N;
    int i = 0;
    while(nCount > 1)
    {
    i = (i+M-1)%nCount;
    printf("%d\n",array[i]);
    memcpy(array+i,array+i+1,nCount-i);
    nCount --;
    // array[nCount] = 0;//可省此行
    }
    printf("約瑟夫=%d\n",array[0]);
    return array[0];
    }  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2008-10-30 17:32 | dove52208@126.com
    呵呵 在#include <stdio.h>
    后加上#include <stdlib.h>之后 C的就可以實現了!!  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2009-02-01 17:56 | johnpzd
    原文思路很經典,佩服!!!  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2009-07-17 11:47 | s
    hh  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2009-07-17 11:47 | s
    ddddddddddddddddddddd  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2009-10-10 23:01 | 冷如冰
    C語言描述的不是很準確
    如果n = 10,m = 3,則程序的輸出可能就會出現問題。  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2009-10-29 21:46 | wx
    挺好的,c的漏粘include<stdlib.h>,因為有用到malloc函數。  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2010-03-17 11:39 | teamoGod
    其他的沒問題,只有當m=1的時候不對。  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2010-06-09 21:03 | huchuhan
    哥們啥是鏈表?  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)[未登錄]
    2011-09-12 16:54 | Sky
    @huchuhan
    看不懂
    !  回復  更多評論
      
    # re: 約瑟夫環算法(循環鏈表解決)
    2012-03-19 10:28 | 527055685@qq.com
    約瑟夫環的變體-37個奴隸問題,我也用了循環鏈表去做
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 111 //總的奴隸數
    #define DIE 3 //數K個,第K個要被殺
    typedef struct link{
    int value; //用了保存奴隸的編號
    struct link *next;
    }* loop_link;
    void fun(struct link *slave);
    int main(void)
    {
    loop_link slave=NULL,current,head;
    int i;
    for(i=1;i<=MAX;i++)
    {
    current=malloc(sizeof(struct link));
    current->value=i;
    current->next=NULL;
    if(slave==NULL)
    {
    slave=current;
    head=slave;
    }
    else
    {
    slave->next=current;
    slave->next=slave->next;
    slave=slave->next;
    }
    }
    slave->next=head; /*將最后一個奴隸指向第一個奴隸,最終在這里形成一個循環鏈表 */
    slave=head;
    fun(slave);
    return 0;
    }
    void fun(struct link *slave)
    {
    int j;
    struct link* current;
    if(slave->value==slave->next->value)
    printf("這個編號為%d的奴隸不用被殺\n",slave->value);
    else
    {
    for(j=1;j<DIE;j++)
    {
    current=slave;
    slave=slave->next;
    }
    current->next=slave->next;
    current=slave;
    slave=current->next;
    free(current);
    fun(slave);
    }
    }  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2011年9月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    常用鏈接

    隨筆分類

    隨筆檔案

    文章檔案

    相冊

    連接

    最新隨筆

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲一卡2卡3卡4卡国产网站| 午夜不卡AV免费| 国产又大又粗又硬又长免费| 日韩在线视频线视频免费网站| 亚洲人成人无码网www电影首页 | 亚洲色大成网站www永久男同| 国产伦精品一区二区三区免费下载| 中国内地毛片免费高清| 亚洲国产综合精品| 亚洲性在线看高清h片| 84pao国产成视频免费播放| 亚洲AV日韩AV永久无码色欲| 亚洲日产无码中文字幕| 国产精品久久久久免费a∨| 国产在线观看免费av站| 亚洲一级特黄特黄的大片| 中文字幕亚洲男人的天堂网络| vvvv99日韩精品亚洲| 我的小后妈韩剧在线看免费高清版 | 国产免费卡一卡三卡乱码| 午夜不卡久久精品无码免费| 亚洲日韩在线中文字幕综合| 亚洲AV人无码综合在线观看| 国产成人免费A在线视频| 最刺激黄a大片免费网站| 国产精品成人啪精品视频免费| 亚洲一级毛片中文字幕| 亚洲国产精品无码av| 免费a级黄色毛片| 无码人妻一区二区三区免费| 久久狠狠躁免费观看2020| 免费无毒a网站在线观看| 亚洲综合伊人制服丝袜美腿| 久久综合图区亚洲综合图区| 亚洲午夜无码片在线观看影院猛 | 亚洲乱色熟女一区二区三区丝袜| 日韩午夜免费视频| 久青草国产免费观看| 中文字幕在线观看亚洲日韩| 亚洲理论片中文字幕电影| 亚洲AV无码专区在线播放中文 |