【遇见时光】笔试-下蹲-java实现

美团内推笔试编程题:有5个人,编号1,2,3,4,5,裁判叫号叫到1,编号1蹲,叫到2,编号2,3蹲,叫到3,编号4,5,1蹲,以此类推;先选定一个人编号p,判断该人在每次叫号时蹲不蹲,蹲输出Y,不蹲输出N

思路:用两个int型记录应该下蹲的起始和末尾的编号,分别为m,n

1.当p>=m&&p<=n时,说明p在m,n之间

2.累次之后也就是叫号累加超过5了就会出现如:要4,5,1蹲的情况,此时p>=m&&p<=5或p>=0&&p<=n;

java代码如下:

 1 package test;
 2 import java.util.Scanner;
 3 
 4 //有5个人,编号1,2,3,4,5,裁判叫号叫到1,编号1蹲,叫到2,编号2,3蹲,叫到3,编号4,5,1蹲,以此类推
 5 public class UpAndDown {
 6     public static void Down(int p,int[] a){
 7         int sum =0;
 8         for(int i=0;i<a.length;i++){
 9             int m = (sum+1+5)%5;
10             //有可能出现m为0的情况,但m不可能为0,此时m应该是5,所以特殊处理,n同理
11             if(m==0)
12                 m=5;
13             int n = (sum+a[i])%5;
14             if(n==0)
15                 n=5;
16             sum+=a[i];
17             if(m<=n){
18                 if(p>=m&&p<=n){
19                     System.out.println("Y"+" ");
20                 }else{
21                     System.out.println("N"+" ");
22                 }
23             }else{
24                 if((p>=m&&p<=5)||(p>=0&&p<=n)){
25 System.out.println("Y"+" "); 26 }else{ 27 System.out.println("N"+" "); 28 } 29 } 30 31 } 32 } 33 34 public static void main(String[] args) { 35 // TODO Auto-generated method stub 36 Scanner in=new Scanner(System.in); 37 int p=in.nextInt(); 38 int q=in.nextInt(); 41 int [] a=new int[q]; 42 for (int i = 0; i < q && in.hasNext(); i++) { 43 a[i] = in.nextInt(); 44 } 45 // in.close(); 46 Down(p,a); 47 // in.close(); 48 } 49 50 }

运行结果:

3 6
1 2 3 4 4 3
N 
Y 
N 
Y 
Y 
N 

 

posted @ 2016-09-10 10:16  _遇见时光  阅读(243)  评论(0编辑  收藏  举报