当前位置: 首页 > news >正文

电子商务网站设计思路/广州seo托管

电子商务网站设计思路,广州seo托管,做学分网站,徐州一级资质钢结构网架公司问题描述: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。由第一个人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数…

问题描述:
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。由第一个人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到最后剩下一个人。
一般的思路就是通过一个count计数的方法,循环遍历链表,逐一删除。但是这样的方法时间复杂度要有O(n×m),(总共要删除n-1个数,每删除一个需要遍历m次)。那有没有什么办法直接就找到我们需要删除的那个节点呢,比如给你链表1→2→3→4→5→1,这是环状链表。如果m=3的话,最后留下的是第4个节点。这里我们就需要借用数学的方式来进行推到公式,利用递归的方式求解了。
递归求解思路:
(我通过递归的方式,返回需要删除第几个节点,所以,节点编号从1开始,返回的也是第几个节点)
第一次删除第m个节点很简单,就是m%n的那个节点,但是第二次删除节点就有点困难了,为什么,因为,你需要从第m+1的节点重新从1开始数,数到第m个节点再次删除。其实,不知道你们有没有发现,其实第二次开始数的第1个节点,就是上一次的m+1号节点。所以前一个链表节点和后一个链表节点对应的编号关系就是:
oldNum=(newNum+m-1)%(当前节点数)+1 (1)
下面从图片分析下:
这里写图片描述

根据公式(1)的关系,你就可以由新链表找到对应就链表的编号位子了。当链表中由i个节点时,编号对应的公式是:num(i) = (num(i-1)+m-1)%i +1;
(如果链表从0开始编号的话,那么公式就是num(i) = (num(i-1)+m)%i ),返回的是下标值,且最后num(1) = 0;)

代码实现:

public class JosephusProblem {//链表节点类public static class Node {public int value;public Node next;public Node(int data) {this.value = data;}}public static Node josephusKill2(Node head, int m) {if (head == null || head.next == head || m < 1) {return head;}Node cur = head.next;int tmp = 1; // 表示链表长度/**计算链表长度*/while (cur != head) {tmp++;cur = cur.next;}tmp = getLive(tmp, m); // 返回链表中应该删除的那个值位置while (--tmp != 0) {head = head.next;}head.next = head;return head;}public static int getLive(int i, int m) {if (i == 1) {//如果从0开始编号的话,此处return 0return 1;}//如果从0开始编号的话,此处(getLive(i - 1, m) + m) % i,返回的就是下标值,比如从1开始,返回的是4,而从0开始,返回的是3return (getLive(i - 1, m) + m - 1) % i + 1;//这个就是上述公式实现}
}

参考文献:
求自然语言解释:约瑟夫环之递归算法?

 

转载于:https://www.cnblogs.com/loren-Yang/p/7466130.html

http://www.lbrq.cn/news/2340955.html

相关文章:

  • 移动手机网站开发/国内优秀网站案例
  • 自己的服务器做网站/浏览器下载安装
  • 买完服务器怎么做网站/深圳seo优化seo优化
  • 合肥快速做网站/网站制作公司哪家好
  • 三线建设学兵连网站西安地区联系人/网站建设需要多少钱
  • 辽宁智能网站建设制作/百度推广每年600元什么费用
  • 中国公路建设招标网站/百度助手下载
  • 衡水网站优化/天津百度推广开户
  • 顺德互动交流网站/黄金网站软件免费
  • 新乡做网站费用/厦门seo结算
  • 新手做网站/网络推广公司企业
  • 贵州网站建设维护/合肥百度关键词优化
  • php动态网站开发参考文献/百度一下一下你就知道
  • 58同城网站建设 推广/关键词林俊杰mp3
  • wordpress从哪里登录/广州推广优化
  • 苏州做网站的公司/百度竞价返点开户
  • 医院导航网站怎么做/百度搜索一下
  • 培训网站建设/怎么制作网页里面的内容
  • 网站301跳转怎么做/百度收录推广
  • 试百客 专业做试用的网站/网络推广怎么推广
  • 一级消防工程师考试通过率多少/百度seo详解
  • 企业网站建设中存在的主要问题会有哪些?/免费公司网站建站
  • 电子商务网站设计内容/互联网营销主要学什么
  • 网站建设 技术方案/广东省广州市白云区
  • 新网站应该怎么做seo/域名注册商怎么查
  • 重庆公司网站制作公司/地推网app推广平台
  • wordpress5.0大更新/seo网络贸易网站推广
  • 贵州省住房和城乡建设厅门户网站/旺道seo软件
  • 中华智能自建代理网站/微信广告怎么投放
  • 专业的网站制作公司哪家好/seo优化运营专员
  • HashMap详解
  • 如何将 iPhone 备份到云端:完整指南
  • 详解彩信 SMIL规范
  • vue2入门(1)vue核心语法详解复习笔记
  • CTFSHOW pwn161 WP
  • 手写std::optional:告别空指针的痛苦