java实现圆桌问题
圆桌问题
题目
圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。
#输入
多组数据,每组数据输入:好人和坏人的人数n(<=32767)、步长m(<=32767);
输出
对于每一组数据,输出2n个大写字母,‘G’表示好人,‘B’表示坏人,50个字母为一行,不允许出现空白字符。相邻数据间留有一空行。
思路
既然要找到所有坏人的位置,那我们可以用数组循环来找到,找到那个位置,我们就标记,如果在找的过程中遇到了被标记的位置,那我们就不记这次,直接跳到下一个位置,如果找的位置超过了总的位置,我们就返回最开始的位置继续找
import java.util.*;
public class Main {public static void main(String[] args) {int count=0;List<StringBuffer> list=new ArrayList();Scanner in=new Scanner(System.in);while(in.hasNext()) {int T=in.nextInt();int step=in.nextInt();int flag=0;String[] a=new String[2*T+5];for(int i=0;i<T;i++) {//tem表示的是下标int tem=flag+step-1; //flag表示上次坏人的下标for(int j=flag;j<=tem;j++) { //j是数组下标if(a[j]!=null) { //表示该位置有之前标记的,不予算tem++;}if(j==tem) { //如果该位置等于目标位置,则标记a[j]="B";flag=j+1;}if(j==2*T-1) {tem=tem-2*T; j=-1;flag=0;}}} for(int i=0;i<2*T;i++) {if(a[i]==null) {a[i]="G";}if((i+1)%50==0) {System.out.println(a[i]);}else {System.out.print(a[i]);}}System.out.println();System.out.println();}}
}
java实现圆桌问题相关推荐
- Java技术交流群[微信](Talking Coding)
怀揣梦想加入不少的技术群(微信.qq.论坛社区),本想着长点本事,时间一长,技术没学到,表情包到是搜藏了不少. 鉴于此,个人自己建立了一个微信群- Java技术圆桌会 -专注于技术学习.探讨.研究.分 ...
- 验证码过期(小功能)
作用:模拟获取验证码,10s后,重新获取.未过期前不可重复获取: <%@ page language="java" import="java.util.*" ...
- java多线程--哲学家进餐问题(操作系统)(哲学家进餐问题:5个哲学家共用一张圆桌,分别坐在周围的5张椅子上,在圆桌上有5个碗和5只筷子(注意是5只筷子,不是5双),碗和筷子交替排列。)
哲学家进餐问题:5个哲学家共用一张圆桌,分别坐在周围的5张椅子上,在圆桌上有5个碗和5只筷子(注意是5只筷子,不是5双),碗和筷子交替排列.他们的生活方式是交替地进行思考(thinking)和进餐(e ...
- java 圆桌_约瑟夫问题求解释(圆桌问题)Java
publicclassJosephus{publicstaticvoidmain(Stringargs[]){if(args.length!=2)//处理参数数目不正确情况{System.out.pr ...
- 从Java到Spring为何独得青睐Spring Summit 2017不可不知的那些事儿
作为最受欢迎的编程语言之一,Java诞生这二十多年以来拥有着数量众多的铁杆粉丝.虽然新的编程语言层出不穷,但是很多人对Java的钟爱却丝毫未变.而在Java为数众多的框架中,Spring框架独得很多人 ...
- java同步互斥功能检测_猿考研之操作系统篇三(进程同步,管程,死锁)
进程同步 进程具有异步性的特征.异步性是指,各并发执行的进程以各自独立的.不可预知的速度向前推进. 同步机制应遵循的准则 空闲让进:其他进程均不处于临界区: 忙则等待:已有进程处于其临界区: 有限等待 ...
- java 面试心得总结-BAT、网易
声明: 文章转自http://www.nowcoder.com/discuss/3043?type=2&order=0&pos=5&page=2 之前实习的时候就想着写一篇面经 ...
- 2016蘑菇街编程题:搬圆桌
题目描述 现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1).每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转.问最少需要移动几步. 输入描述: 一行 ...
- java多线程多态_Java学习之多线程
多线程: (一)进程与线程 进程特点 并发与并行的区别: 多线程编程的好处: (二)多线程的建立 1,通过继承Thread类,代码如下: class MyThread extendsThread {p ...
最新文章
- 最佳实践系列:前端代码标准和最佳实践
- POJ9384 迷宫(基金会BFS)
- python3.4编程_求教python3.4的编程问题
- /bin/bash^M: bad interpreter: 没有那个文件或目录
- 织梦DEDECMS网站留言板提交时验证码错误返回空白页的解决办法
- mysql show
- 这里有一个让你变成技术大牛的机会
- python中datetime默认的1990年改为_如何更改numpy datetime64中的年份值?
- 管家婆婆分销ERP V3 打印报错
- C/C++预处理过程详细梳理(预处理步骤+宏定义#define/#include+inline函数+宏展开顺序+条件预处理+其它预处理定义)
- 游戏 蒸汽之城开发经验
- Excle 取前几位数、中间几位数、后几位数的方法
- 计算机多核启动原理,多核cpu工作原理 不进来看看?
- 3.模板模式_1:什么是模板模式???什么情况适合用模板模式???模板模式如何实现???
- GPL amp; LGPL
- java的聚合_java中聚合是什么
- c语言停车场的收费管理系统,c语言停车场管理系统
- thinkphp6对接阿里云短信服务完成定时发送短信功能
- 与DC漫画招牌角色“蝙蝠侠”结缘,NFT向前再迈进一步
- 李宏毅机器学习笔记(一)