剑指offer 45-约瑟夫环
来源:互联网 发布:淘宝加盟诈骗罪 编辑:程序博客网 时间:2024/05/29 18:24
方法1:list 循环
方法2: 公式法
方法3:链表
#include<iostream>#include<list>using namespace std;//方法1int LastRemaining(unsigned int n,int m){if(n<1 || m<-1)return 0;list<int> numbers;for(int i=0;i<n;i++)numbers.push_back(i);list<int>::iterator iter = numbers.begin();while(numbers.size()>1){for(int i=1;i<m;i++){++iter;if(iter==numbers.end())iter=numbers.begin();}list<int>::iterator next = ++iter;if(next==numbers.end())next=numbers.begin();numbers.erase(--iter);iter = next;}return *iter;}//方法2int LastRemaining2(unsigned int n,int m){if(n<1 || m<-1)return 0;int result = 0;for(int i=2;i<=n;i++)result = (result+m)%i;return result;}// ====================测试代码====================void Test(char* testName, unsigned int n, unsigned int m, int expected){ if(testName != NULL) printf("%s begins: \n", testName); if(LastRemaining(n, m) == expected) printf("Solution1 passed.\n"); else printf("Solution1 failed.\n"); if(LastRemaining2(n, m) == expected) printf("Solution2 passed.\n"); else printf("Solution2 failed.\n"); printf("\n");}void Test1(){ Test("Test1", 5, 3, 3);}void Test2(){ Test("Test2", 5, 2, 2);}void Test3(){ Test("Test3", 6, 7, 4);}void Test4(){ Test("Test4", 6, 6, 3);}void Test5(){ Test("Test5", 0, 0, -1);}void Test6(){ Test("Test6", 4000, 997, 1027);}int main(int argc, char* argv[]){ Test1(); Test2(); Test3(); Test4(); Test5(); Test6(); return 0;}
#include<iostream>using namespace std;struct ListNode{ int data; ListNode *next;}; void Josephus(int n,int k,intm){ if(n<k || n<m) return; ListNode *head=new ListNode(); head->data=1; head->next=NULL; ListNode *p=head; for(int i=2;i<=n;i++) { ListNode *node=new ListNode(); node->data=i; p->next=node; p=p->next; } p->next=head; p=head; ListNode *r=p; while(k--) { r=p; p=p->next; } while(n--) { for(int s=m-1;s--;r=p,p=p->next); r->next=p->next; cout<<p->data<<" "; delete p; p=r->next; }}int main(){ Josephus(13,4,2);}
0 0
- 剑指offer 45-约瑟夫环
- [剑指offer]约瑟夫环
- 《剑指offer》45:约瑟夫问题
- 【剑指offer】约瑟夫环问题
- 《剑指offer》约瑟夫环问题
- 剑指offer 约瑟夫环问题
- 【剑指offer】约瑟夫环问题
- 《剑指Offer》面试题:约瑟夫环问题
- 【剑指offer】之约瑟夫环问题
- 剑指offer——约瑟夫环问题
- 剑指offer面试题45圆圈中最后一个数字,约瑟夫环模拟和数学解法
- 剑指offer 面试题45—圆圈中最后剩下的数字(约瑟夫环)
- 【剑指Offer学习】【面试题45:圆圈中最后剩下的数字(约瑟夫环问题)】
- 《剑指offer》:[45]圆圈中最后剩下的数字(约瑟夫(Josephuse)环问题)
- 剑指offer系列之四十二:约瑟夫环问题
- 剑指offer面试题之约瑟夫环问题
- 剑指offer之孩子的游戏(约瑟夫环)
- 《剑指offer》孩子们的游戏---约瑟夫问题
- portal是什么?
- PHP版本特性笔记
- ZOJ1709
- 【iOS开发之Objective-C】面向对象编程--间接
- 生成算法
- 剑指offer 45-约瑟夫环
- iOS mac 终端 常用命令
- 对于node.js开发指南中博客案例的修改实现(二)--代码
- ucore操作系统lab4实验报告(理论部分)
- 配置匿名用户
- Difference Between Primes(素数打表,素数表与数表通用)
- 物联网系统的搭建(二)
- Java Socket应用(五)——编程实现基于 TCP 的 Socket 通信
- CentOS7下的btrfs文件系统