• 约瑟夫环


    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Node{
        int data;
        struct Node *next;
    }node;
    
    //创建约瑟夫环
    node* create(int n){
        node *head,*p,*s;
        int i;
        head = (node*)malloc(sizeof(node));
        p = head;
        p->data = 0;
        p->next = p;
        for (i = 1; i <= n; i++){
            s = (node*)malloc(sizeof(node));
            p->next = s;
            p = p->next;
            p->data = i;
        }
        head = head->next;
        //组成环路
        p->next = head;
        return head;
    }
    
    node* findNode(node *head, int index){
        //环路不存在到链表尾情况
        while (--index){
            head = head->next;
        }
        return head;
    }
    
    node* delNode(node *head, int index){
        node *p, *s;
        index--;
        while (--index)
        {
            head = head->next;
        }
        p = head->next;
        head->next = p->next;
        free(p);
        return head->next;
    }
    
    void main(){
        node *mylist;
        mylist = create(10);
        //找到开始位置
        node *start = findNode(mylist, 1);
        //只剩最后一个元素时必然指向自身
        while (start!=start->next)
        {
            //更新开始位置
            start=delNode(start,2);
        }
      printf("%d",start->data); }

    公式法:

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

    2. f[1]=1; f[i]=(f[i-1]+m)%i  (i>1);   if(f[i]==0) f[i]=i;

    3. P(1, m, k)=1 (i = 1);   P(i, m, k)=[P(i - 1, m, k ) + m - 1] % i + 1 (i > 1, 此处先减1是为了让模i的值不为0)

  • 相关阅读:
    在.net C#里怎样调用非托管动态库函数dll?
    Visual C#中的MDI编程
    c#图形装置接口
    粗糙集理论介绍
    Using .NET DataSet in Flex 2
    图象光照研究路线
    基于光照模型应用前景
    使用netsh.exe配置TCP/IP
    vb.net 防止MDI子窗体被多次实例化的四种方法
    一定概率选中某一字母
  • 原文地址:https://www.cnblogs.com/bankyh/p/4474647.html
Copyright © 2020-2023  润新知