学习
实践
活动
专区
工具
TVP
写文章

约瑟夫问题c++实现)

描述:约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m猴子退出圈外,剩下猴子再接着从1 开始报数。 就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王编号。 输入:每行是用空格分开两个整数,第一个是 n, 第二个是 m ( 0 < m, n < 300)。 最后一行是: 0 0 输出:对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王编号 input: 6 2 12 4 8 3 0 0 output: 5 1 7 分析:猴子可以用一个数组来表示 ,数组值为猴子编号,当某只猴子出局即把该编号改为0 说明该猴子出局,当最后只剩下一个不为0值时该值即为猴王编号。 { 10 for (int i = 0; i < n; i++) 11 a[i] = i + 1; 12 int k = n;//标记剩下猴子

2.1K10
  • 广告
    关闭

    618夏日盛惠

    2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    趣味问题:画图(c++实现)

    描述:在一个定义了直角坐标系纸上,画一个(x1,y1)到(x2,y2)矩形指将横坐标范围从x1到x2,纵坐标范围从y1到y2之间区域涂上颜色。下图给出了一个画了两个矩形例子。 图中,一共有15个单位面积被涂上颜色,其中紫色部分被涂了两次,但在计算面积时只计算一次。在实际涂色过程中,所有的矩形都涂成统一颜色,图中显示不同颜色仅为说明方便。 给出所有要画矩形,请问总共有多少个单位面积被涂上颜色。  评测用例规模与约定  1<=n<=100,0<=横坐标、纵坐标<=100 输入: 输入第一行包含一个整数n,表示要画矩形个数。    接下来n行,每行4个非负整数,分别表示要画矩形左下角横坐标与纵坐标,以及右上角横坐标与纵坐标。 输出:输出一个整数,表示有多少个单位面积被涂上颜色。 0,最后统计数组中不为0数目即解决。

    74940

    字母排序问题c++实现)

    描述:编写一个程序,当输入不超过60个字符组成英文文字时,计算机将这个句子中字母按英文字典字母顺序重新排列,排列后单词长度要与原始句子中长度 相同。     THE PRICE OFBREAD IS ¥1 25 PER POUND     输出:     ABC DDEEE EFHIINO OP ¥1 25 PPR RRSTU  并且要求只对A到Z字母重新排列 ,其它字符保持原来状态。 分析:难点在待排序列中混有不相干字符,我用是冒泡排序法,在大写字母间进行比较,用一个函数返回和最大值交换字母下标。 1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 //返回第k位前一个大写字母下标 6 int cal

    1.4K10

    C++常见问题系列(一)——基础问题

    一 三种基本数据类型 整数型,浮点型和void型;其中表示整数、字符和布尔值算术类型合称为整形。 二 操作符 操作符说明了表达式主要目的,并且计算返回结果。 按照功能区分操作有算术操作符、关系操作符、逻辑操作符、条件操作符等,不同优先级决定了表达式运算顺序。 ) 注意:变量自增自减是修改变量值,指针自增自减是修改指针指向地址。 四 变量声明、定义与引用 声明主要目的是表明变量类型和名称,定义主要目的是为变量分配存储空间,引用主要用作函数形式参数。 例子:汉诺塔问题 void Move(int n,char i,char j) { cout<<"send"<<n<<"from"<<i<<"to"<<j<<endl; } void Hannoi

    54390

    C++ 栈和典型迷宫问题

    3.3.1 入栈 链式栈不需要考虑栈是已经满问题。入栈实现流程: 创建一个新结点对象。 原来头结点成为新结点后驱结点。 新结点成为头结点。 5.1 迷宫问题 迷宫问题描述:在一个错综复杂迷宫世界,有一个入口,有一个出口。在入口位置有一只小老鼠,出口位置有一块奶酪。要求通过编码方式帮助小老鼠在入口到出口之间找到一个可行路径。 迷宫问题是一类典型问题,解决此类问题关键思想包括: 试探过程:每到达一个当前位置(第一个当前位置为入口),记录此当前位置四周可尝试其它位置,然后选择其中一个位置作为当前位置尝试着继续前进。 这时就需要在已经存储可行位置选择一个,这步操作称为回溯。 很明显,每次记录可尝试位置是在回溯后使用,符合先进后出存储理念。栈在迷宫问题中用来存储可试探位置。 总结 本文实现了顺序栈和链式栈,简要介绍了STL中stack容器,并使用它解决了典型迷宫问题

    19920

    学习c++问题总结

    1.类中函数定义后加了一个const代表什么? 代表它将具备以下三个性质:   1.const对象只能调用const成员函数。   2.const对象值不能被修改,在const成员函数中修改const对象数据成员值是语法错误   3.在const函数中调用非const成员函数是语法错误   任何不会修改数据成员函数都应该声明为 如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序健壮性。    所以看完上面这句话就应该明白了函数定义后加const用处,以及什么时候用到const,这会是一个好编程习惯。 以下程序中,类stack成员函数GetCount仅用于计数,从逻辑上讲GetCount应当为const函数。编译器将指出GetCount函数中错误。

    40320

    java与c++内存泄露问题

    以前用c++,现在用java我发现两种语言用法上区别不太大,但是在编程思路上却又区别,c++什么都要自己做,但是如果做很严谨是不会出现内存泄露问题,但是c++太灵活以至于可用性确实降低了 ,什么都需要自己考虑,而java在内存回收上有垃圾回收机制,在可用性上比c++要好一点,但是java内存泄露却更加隐蔽,今天我来谈谈java与c++内存泄露区别: 1.c++内存泄露概念很简单 这是你方法运行时间较短时候,这样很明显不存在内存泄露问题,但是当你方法运行时间很长的话,那么你实例就不会得到回收,这就出现了内存泄露问题,所以你用完对象后就必须把你引用设置成null。 很明显,java中内存泄露比c++内存泄露复杂多,而且要隐蔽多,所以现在想起那句话,我才理解,为什么说垃圾回收是一堵高墙,搞java的人想出去,搞c++的人想进去,我认为这就是两种语言有利有弊 ,c++太灵活,易用性比较差,但是所展现问题比较清晰,而java比较规整,并且是真正oo语言,所以易用性更加好一点,但是它存在问题也就比较复杂,比较隐蔽,如果不深究这些问题是很难发现

    19610

    C++简单实现八皇后问题

    近来无聊,想着几年前用c#实现八皇后,是参考网上答案,如今过了几年,想试试有没进步,用c++简单地实现。 八皇后问题,是回溯算法经典例子,它规则要求是同一行同一列同一条斜线不能有两个皇后,不然会相互攻击。这条件听上去不难吧,可运算量却是惊人多啊。 首先,程序是算法加数据结构,我这程序数据结构是一个8*8整型矩阵chessboard,全部初始化为0,这作为棋盘,每一格若为0则代表可以放棋子,另外还有一个长度为8整型数组path,记录一次成功排列 ,然后再往前探测是否有可走格子(value为0),若达到该行尽头还没找到,返回false。 ,所以有不少重复布局,故8*8棋盘会有190中排列方式。

    45720

    C++】算法集锦(9):背包问题

    文章目录 0-1背包问题 动态规划标准套路 伪代码 修缮代码 子集背包问题 思路分析 代码实现 完全背包问题 本来要拿《背包九讲》作为参考,奈何太抽象,我看不懂 0-1背包问题 给你一个载重量为 else dp[i][w] = max(d[i-1][w-wt[i-1]]+var[i],dp[i-1][w]); } } return dp[N][W]; } ---- 子集背包问题 这个问题怎么转化为背包为题呢? 首先,对这个数组计数,如果和是奇数,就返回-1吧,如果和是偶数,就除于二,记为n。 这个问题就转变为:从数组中找出一些数,使得它们和恰好等于n。 - nums[i] >= 0) dp[j] = dp[j] || dp[j - nums[i]]; return dp[sum]; } ---- 完全背包问题 换零钱问题:给定不同面额硬币(coins),和一个总金额(amount),写一个函数来计算可以凑成总金额硬币组合数。

    31010

    使用C++解决八数码问题

    八数码问题 ---- 问题描述:通过单步移动把下面的矩阵移动成1-8环绕一周矩阵(即0在中间,1-8顺序排成一圈,1在哪无所谓) 217860345 2 8 3 1 6 4 7 0 5 如果是,则得到问题解,成功退出; e) 如果节点n不可扩展,则转第b)步; f) 扩展节点n,将其子节点放入Open表尾部,并为每一个子节点设置指向父亲节点指针,然后转第b)步。 深度优先搜索算法如下: a) 把初始节点放入Open表中; b) 如果Open表为空,则问题无解,失败退出; c) 把Open表第一个节点取出放入Close表,并标记该节点为n; d 如果是,则得到问题解,成功退出; e) 如果节点n不可扩展,则转第b)步; f) 扩展节点n,将其子节点放入Open表头部,并为每一个子节点设置指向父亲节点指针,然后转第b)步。 如果是,则得到问题解,成功退出; e) 如果节点n不可扩展,则转第b)步; f) 扩展节点n,计算每一个子节点f值,并为每个子节点设置指向节点n指针,将这些子节点放入Open表中; g

    17420

    C++经典算法题-约瑟夫问题

    26.Algorithm Gossip: 约瑟夫问题(Josephus Problem) 说明 据说着名犹太历史学家 Josephus有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus 然而Josephus 和他朋友并不想遵从,Josephus要他朋友先假装遵从,他将朋友与自己安排在第16个与第31个位置,于是逃过了这场死亡游戏。 解法 约瑟夫问题可用代数分析来求解,将这个问题扩大好了,假设现在您与m个朋友不幸参与了这个游戏,您要如何保护您与您朋友? ,41个人而报数3约琴夫排列如下所示: 14 36 1 38 15 2 24 30 3 16 34 4 25 17 5 40 31 6 18 26 7 37 19 8 35 27 9 20 32 10 41 21 11 28 39 12 22 33 13 29 23 由上可知,最后一个自杀是在第31个位置,而倒数第二个自杀要排在第16个位置,之前的人都死光了,所以他们也就不知道约琴夫与他朋友并没有遵守游戏规则了

    70110

    关注

    腾讯云开发者公众号
    10元无门槛代金券
    洞察腾讯核心技术
    剖析业界实践案例
    腾讯云开发者公众号二维码

    相关产品

    • 腾讯云代码分析

      腾讯云代码分析

      腾讯云代码分析(TCAP),用心关注每行代码迭代、助您传承卓越代码文化!精准跟踪管理代码分析发现的代码质量缺陷、代码规范、代码安全漏洞、无效代码,以及度量代码复杂度、重复代码、代码统计。

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭

      扫码关注腾讯云开发者

      领取腾讯云代金券