编程算法 - 圆圈中最后剩下的数字(递推公式) 代码(C++)
来源:互联网 发布:淘宝上买iphone店铺 编辑:程序博客网 时间:2024/04/30 04:40
圆圈中最后剩下的数字(递推公式) 代码(C++)
本文地址: http://blog.csdn.net/caroline_wendy
题目: 0,1...,n-1这n个数字排成一个圆圈, 从数字0开始每次从这个圆圈里删除第m个数字.
求出这个圆圈里最后剩下的数字.
可以推导出约瑟夫环的递推公式, 使用循环进行求解, 时间复杂度O(n), 空间复杂度O(1).
代码:
/* * main.cpp * * Created on: 2014.7.12 * Author: spike */#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>using namespace std;int LastRemaining(size_t n, size_t m) {if (n<1 || m<1)return -1;int last = 0;for (size_t i=2; i<=n; ++i) {last = (last+m)%i;}return last;}int main(void){ int result = LastRemaining(5, 3); printf("result = %d\n", result); return 0;}
输出:
result = 3
2 0
- 编程算法 - 圆圈中最后剩下的数字(递推公式) 代码(C++)
- 编程算法 - 圆圈中最后剩下的数字(循环链表) 代码(C++)
- 圆圈中最后剩下的数字[算法]
- 面试算法(四十五)圆圈中最后剩下的数字
- 算法题目---圆圈中最后剩下的数字
- 求圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- 18.圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- 圆圈中剩下的最后数字
- 圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- 圆圈中最后剩下的数字
- POJ 2524 :Ubiquitous Religions
- UVALive 6468 Pisano Periods 坑爹暴力
- http://www.cnblogs.com/end/archive/2012/09/25/2701486.html
- ASP.NET MVC Model验证(五)
- C/C++与Matlab混合编程初探
- 编程算法 - 圆圈中最后剩下的数字(递推公式) 代码(C++)
- UVA 23 out of 5
- A. DZY Loves Hash
- Windows中.exe程序的启动过程和C/C++运行时库
- poj 1523 tarjan求割点
- 由《小道消息 • 思维偏误》说开来。
- MATLAB 与 PostgreSQL 数据库的连接
- poj-1961-Period
- 一个microsoft的.exe程序文件的启动过程 .