一道很简单的老问题,求更好的解决方法

简介:

今天在一个论坛看到有人问一个很老的问题。

10个人围一圈,编号为1的人开始数数,数到能被3整除的编号的人退出,然后再往下数。问最后剩几个人?
如第一圈后:3,6,9退出,还剩7人下一圈从第11开始数。求算法

看到过这个题目很多次,从来都没有仔细想过写过代码。 
下面的方法是我今天看到题目后的第一反应,应该有更好的吧。
你们都是怎么做的啊,学习一下,谢谢啦!
我算法很弱的。。。

一、数组实现 
1.    for循环初始化每个人的值为0
2.    开始报数,如果所报之数能被3整除,设置此人的值为1
3.    如此循环下去,直到只有一个人的值为0
4.    获得此人在数组中的下标,加1之后输出,即为所求

package   Test;
public   class 
 Main {
    
 public   static   void 
 main(String[] args) {
        
 int [] person  =   new   int [ 10 
];
        
 for  ( int  i  =   0 ; i  <  person.length; i ++ 
) {
            person[i] 
 =   0 
;
        }
        
 for  ( int  j  =   0 , count  =   0 , leave  =  person.length; leave  !=   1 ; j  =  (j  +   1 
) %  (person.length)) {
            
 if  (person[j]  ==   1 
) {
                
 continue 
;
            } 
 else 
 {
                count
 ++ 
;
                
 if  (count  %   3   ==   0 
) {
                    person[j] 
 =   1 
;
                    leave
 -- 
;
                }
            }
        }
        
 for  ( int  i  =   0 ; i  <  person.length; i ++ 
) {
            
 if  (person[i]  ==   0 
) {
                System.out.println(
 " The last person is  "   +  (i  +   1 
));
                
 return 
;
            }
        }
    }
}

本文转自BlogJavaOo缘来是你oO的博客,原文链接:一道很简单的老问题,求更好的解决方法,如需转载请自行联系原博主。
相关文章
|
Java Maven 开发者
简述Maven中的‘传递性’关键词
简述Maven中的‘传递性’关键词
108 0
|
存储 算法 C语言
通义灵码在考研C语言和数据结构中的应用实践 1-5
通义灵码在考研C语言和数据结构中的应用实践,体验通义灵码的强大思路。《趣学C语言和数据结构100例》精选了五个经典问题及其解决方案,包括求最大公约数和最小公倍数、统计字符类型、求特殊数列和、计算阶乘和双阶乘、以及求斐波那契数列的前20项和。通过这些实例,帮助读者掌握C语言的基本语法和常用算法,提升编程能力。
312 4
|
供应链 JavaScript 前端开发
使用Django和Vue实现电子商务网站的后端和前端
【4月更文挑战第10天】本文介绍了使用Django和Vue构建电子商务网站的后端与前端方法。Django作为Python的Web框架负责后端,其模型-视图-控制器设计简化了商品管理、购物车和订单处理。Vue.js用于前端,提供数据驱动和组件化的用户界面。通过定义Django模型和视图处理请求,结合Vue组件展示商品和管理购物车,开发者可构建交互性强的电商网站。虽然实际开发涉及更多细节,但本文为入门提供了基础指导。
449 2
|
数据采集 网络协议 物联网
C# | 上位机开发新手指南(一)概述
C#,是微软主推的编程语言。它在工业控制、自动化、物联网等领域应用非常广泛。由于国内在工业控制领域技术发展路径的原因,早期的自动化控制面板由Window环境提供,大量的MFC、VB6控制应用被部署在了工厂车间。在用户习惯和界面环境的双料加持下,给C#在工业领域的推广打下的坚实的基础。使用C#进行上位机开发已经是行业内的主流选择。 如果正在读文章的你准备或正在从事C#的上位机开发,本专栏将会是您在这条路线上的路标。欢迎一同打卡每一个节点。
2288 0
C# | 上位机开发新手指南(一)概述
|
供应链 搜索推荐 物联网
数字孪生-F-35生产系统
数字孪生-F-35生产系统
434 0
|
JSON Kubernetes 数据安全/隐私保护
Kubectl
Kubectl 是一个命令行工具,用于管理 Kubernetes 集群。它可以用来创建、删除、更新和查询 Kubernetes 资源,例如部署、服务、副本集等。Kubectl 提供了丰富的命令和选项,可以满足各种管理需求。
185 3
|
消息中间件 存储 中间件
RabbitMQ的延迟队列
RabbitMQ是一个开源的消息队列中间件,它提供了可靠的消息传递机制,被广泛应用于分布式系统中。延迟队列是RabbitMQ中常用的一种队列类型,它可以用来实现消息的延时投递。
502 0
|
弹性计算 开发者
《开发者评测》之倚天云服务器ECS获奖名单
倚天云服务器ECS评测获奖名单出炉啦!
578 1
|
SQL 网络协议 大数据
Linux操作系统选择题之网络配置及服务
Linux操作系统选择题之网络配置及服务
423 0
|
存储 Java 编译器
一文打通:从字节码指令的角度解读前置后置自增自减(加加++减减--)
一文打通:从字节码指令的角度解读前置后置自增自减(加加++减减--)
243 0