HDU3089(约瑟夫环问题)
题意:给出N个数,然后给出K,1到n圈的n个人开始,数K个数之后淘汰一个人,直到只有一个人幸存下来。
暴力法-WA
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
struct node{int x;node*next;node(int x):x(x),next(NULL){}
};
int n,k;
int main(){while(scanf("%d %d",&n,&k)!=EOF){node*first=NULL;node*last=new node(1);first=last;for(int i=2;i<=n;i++){last->next=new node(i);last=last->next;}last->next=first;for(int i=1;i<=n;i++){for(int j=1;j<k;j++){last=first;first=first->next;}if(i==n){cout<<first->x<<endl;}last->next=first->next;first=first->next;}}return 0;
}
方法二:超时
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
ll n,k;
int main(){while(scanf("%lld %lld",&n,&k)!=EOF){ll ans=0;for(int i=1;i<=n;i++){ans=(ans+k)%i;}cout<<ans+1<<endl;}return 0;
}
当N很大,k较小的时候,就算法对i取模(ans=(ans+k)%i)也是没有太大的意义的,在方法二的基础上ans加多个K之后再对i取模,
方法三:
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
ll n,k;
int main(){while(scanf("%lld %lld",&n,&k)!=EOF){ll ans=0,pos,i=1; while(i<n){if(k==1){//注意这里如果除数为0的情况pos=i-ans;}else{pos=(i-ans)/(k-1)+((i-ans)%(k-1)!=0);//如果(i-ans)%(k-1)不为零,那么就意味着还需要加一个步长才对}if(pos+i>n){//如果大于npos=n-i;}ans+=pos*k;//ans加上K个posi+=pos;ans%=i;}cout<<ans+1<<endl;}return 0;
}
HDU3089(约瑟夫环问题)相关推荐
- python中约瑟夫环程序_Python实现约瑟夫环问题的方法
本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...
- 约瑟夫环问题的两种解法(详解)
约瑟夫环问题的两种解法(详解) 题目: Josephus有过的故事:39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓.于是决定了自杀方式,41个人排成一个圆 ...
- python约瑟夫环问题给十个学生编号报到3者出列_趣味算法--约瑟夫环问题(示例代码)...
问题描述 已知n个人(以编号1,2,3,...,n分别表示)围坐在一张圆桌上.指定编号为k的人开始从1报数,数到m的那个人出列:出列那个人的下一位又从1开始报数,数到m的那个人出列:以此规则重复下去, ...
- 一文读懂约瑟夫环算法
2020-05-25 20:13:40 作者 | 扬帆向海 责编 | 王晓曼 出品 | CSDN博客 问题描述 约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题.在计算机编程的 ...
- 面试题小记:1、统计字符串出现的次数,2、约瑟夫环问题
今天面到了一个比较有意思的笔试题,先记录一下: 1.字符串类似'aaabbccddd',写个方法得出'3a2b2c3d',即统计字符串出现的个数 $arr = str_split('aaabbccdd ...
- java实现简单的约瑟夫环问题(二)
Josephus(约瑟夫)问题的数学方法 前面的内容都是直接来来自于百度百科,后面才是我对这段话的理解 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间 ...
- 约瑟夫环双向链表c语言实,双向链表与约瑟夫环代码
双向链表 //注意:该文件操作的链表为带头结点双向链表,头结点数据为-1 #include #include #include #define OK 1 #define ERROR 0 typedef ...
- python解决约瑟夫问题_Python实现约瑟夫环问题的方法
本文实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的 ...
- 约瑟夫环(约瑟夫问题)求最后出列的人数
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出 ...
- PHP解决约瑟夫环问题
PHP解决约瑟夫环问题 一.总结 二.PHP解决约瑟夫环问题 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到 ...
最新文章
- 过主动防御自启动代码delphi
- C# 数据库dataGridView刷新数据和主外键判断
- Web黑客工具箱之LiveHttpHeaders
- TechOnTheNet的Oracle专题
- java vc vb 项目结构
- 如何使用 Apache 设置反向代理
- 用docker跑机器学习环境
- 关于微星主板官网下载网卡驱动后,网络适配器消失的问题
- 【转】ASP六大对象介绍
- 爆炸的符卡洋洋洒洒(dp)
- 最美十大爱情经典句子
- 赶紧自查,你的身份证很有可能被别人绑定了!
- vb microsoft html object library,HTML对象库简介(Microsoft HTML Object Library - mshtml.tlb)...
- 口腔健康核心信息及知识要点
- 【因式分解】x^n+1,当 n 为偶数,系数为实数域的因式分解
- TCP/IP协议的send和recieve
- 企业办公入门之选 用ThinkCentre E95更划算!
- 远程桌面连接凭据不工作怎么办?
- 魔兽地图编辑器的平滑浅水区域
- 基于SSH的网络预约挂号系统的设计与实现
热门文章
- 工业镜头与工业相机的接口
- 传统CV和深度学习方法的比较
- 你应该知道的高性能无锁队列Disruptor
- Android Studio第三十四期 - git企业级应用命令
- InnoDB: Failing assertion: trx-isolation_level == TRX_ISO_READ_UNCOMMITTED
- js实现的时间轴效果
- 开源 免费 java CMS - FreeCMS1.5 标签 guestbookPage
- SQL server数据库日志满了怎么处理?
- redis中文乱码问题
- java args例子_Spring AOP中使用args表达式的方法示例