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

网站建设公司知乎个人网站设计源码

网站建设公司知乎,个人网站设计源码,设计网站公司的账务处理,网站备案和服务器备案吗目录 题目描述: 输入描述: 输出描述: 示例1 解法一(C): 解法二(Cpp): 正文开始: 题目描述: 据说著名犹太历史学家 Josephus 有过以下故事&a…

 目录

题目描述:

输入描述:

输出描述:

示例1

解法一(C):

解法二(Cpp):



正文开始:

题目描述:

        据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞中,39 个犹太人决定宁愿死也不要被敌人抓到,于是决定了一种自杀方式:41 个人排成一个圆圈,由第 1 个人开始报数,报数到 3 的人就自杀,然后再由下一个人重新报 1,报数到 3 的人再自杀,这样依次下去,直到剩下最后一个人时,那个人可以自由选择自己的命运。这就是著名的约瑟夫问题。现在请用单向环形链表得出最终存活的人的编号。

输入描述:

        一行两个整数 n 和 m, n 表示环形链表的长度, m 表示每次报数到 m 就自杀。

输出描述:

        输出最后存活下来的人编号(编号从1开始到n)

示例1

        输入:        5        2

        输出:        3

(备注:   1≤n,m≤1000)


解法一(C):

        创建环形链表,通过两个函数实现:

typedef struct ListNode LS;//根据传入的x的值,创建val = x 的新节点
LS* BuyNewnode(int x)
{LS* newnode = (LS*)malloc(sizeof(LS));if(newnode == NULL){perror("malloc");exit(1);}newnode->val = x;newnode->next = NULL;return newnode;
}//将新节点链接起来
LS* CreateL(int n)
{//第一个节点的val的初始值赋值为1LS* phead = BuyNewnode(1);LS* ptail = phead;for(int i = 2;i <= n;i++){ptail->next = BuyNewnode(i);ptail = ptail->next;}ptail->next = phead;//由于链表中删除某一节点,必须能找到前驱节点,如此才能改变前驱节点的next指针的方向//为了在初始时找到头节点的前驱节点,所以CreateL函数选择返回ptailreturn ptail;
}

         重点:

        1.         while()的终止条件,当pcur->next == pcur 时,循环终止;(这个时候只剩一个人了)

        2.        f:计数作用;(表示每个人报的数);pcur 每动一次,f 都跟着变化;并且初始 f 是1;(第一个人也是要报数的)

        3.        如果f==m,(这个人要自杀);前驱节点next指针指向pcur的下一个节点;同时把pcur这个节点free掉,pcur后移。

        4.        如果f != m,正常报数;pcur向后,prev向后,f++;

主体部分: 


int ysf(int n, int m ) {// write code hereLS* ptail = CreateL(n);LS* pcur = ptail->next;LS* prev = ptail;int f = 1;while(pcur->next != pcur){if(f == m){prev->next = pcur->next;free(pcur);pcur = prev->next;f = 1;}else{pcur = pcur->next;prev = prev->next;f++;}}return pcur->val;
}

解法二(Cpp):

(源自 牛客Huster水仙)

  • 将编号改为从0开始,记f(n,m)为原问题的解

  • 由于第一次遍历了0~(m-1)%n,则第二次遍历相当于将整个队伍循环左移了k位(k=m%n)

  • 所以子问题f(n-1,m)的解循环右移k位即为原问题的解f(n,m)

#include<iostream>
#include<queue>
using namespace std;int getans(int n,int m){if(n==1)return 0;else{return (getans(n-1,m)+m)%n;}}int main(){int m,n;while(scanf("%d%d",&n,&m)!=EOF){printf("%d\n",getans(n,m)+1);}return 0;
}

 


完~

 未经作者同意禁止转载

http://www.yayakq.cn/news/127633/

相关文章:

  • 音乐网站系统怎么做企业微信开放平台api
  • 网站建设 排行响应式官网模板
  • 营销型企业网站分析与诊断的步骤陕西专业做网站
  • 宝塔网站建设教程做不锈钢门的网站
  • 云南城市建设职业学校官方网站网站后台打开慢
  • 如何自己学建设网站脚上起小水泡很痒是什么原因
  • 深圳网站建设深圳网织梦网站模板还原的文件在哪里
  • 湖北seo网站多少钱上海做网站设计
  • 网站不备案可以做百度推广吗厦门做网页网站的公司
  • 深圳网站设计公司是什么国内做视频网站需要啥
  • 外贸多语言网站seo方案
  • 带icp备案的网站深圳网站建设大公司好
  • win8网站源码英文网站制作 官网
  • 哪些网站有搜索引擎作弊的做国际贸易做什么网站
  • 英文都不懂 学网站建设维护难吗佛山h5建站模板
  • 济南有做五合一网站公司网站模板 英文
  • ps做网站 字体多大网站建设资金预算
  • 蚌埠网站设计tp5.1做的网站
  • 买东西网站建设用手机可以建设一个手机网站吗
  • 网站建设 百度经验苏州seo服务
  • 十堰优化网站公司重庆社区官网
  • 外贸在什么网站做网页素材网站有哪些
  • 网站建设 业务培训wordpress恢复主题
  • 免费个人logo设计网站公司网站怎么申请怎么注册
  • 网站产品页如何做优化网站开发技术与应用课程设计
  • 影楼模板网站如何做好电子商务网站开发
  • 网站建设等级定级什么网站可以做宣传
  • 深圳网站建设 site江苏城市建设档案馆网站
  • 企业网站管理系统的运维服务新冠北京最新消息
  • 内蒙古住房与城乡建设厅网站网址早期网站开发用的技术