模拟-玩具的谜题

题目:题目来源
反思收获:利用Java实现这个解题的过程中,思路还算比较清晰,就是创建类的数组时,忘记给数组的元素开辟空间了(其实这个地方可以用两个数组来代替),导致出了一点小问题。Java还是比较好用的,细节加熟练,保持这份热爱吧。

以下为代码:

/*
 * 日期:2020.02.16
 * 作者:城主
 * 题目:洛古普及题-玩具的谜题
 * 思路:先保存小人个数和指令数,利用类数组保存小人的转向和名字,
 *       而后通过每次指令的输入来循环判断,而后确定输出小人的职业
 */
import java.util.Scanner;

class doll
{
	 int dir;//方向
     String name;//职业
}
public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan=new Scanner(System.in);
		int dollnum=scan.nextInt();
		int ordernum=scan.nextInt();
		doll array[]=new doll[dollnum];
	    for(int i=0;i<dollnum;i++)
	    {
	    	array[i]=new doll();
	    	array[i].dir=scan.nextInt();
	    	array[i].name=scan.next();
	    }
	    int target=0;//标记当前位置
	    for(int i=0;i<ordernum;i++)
	    {
	    	int orderdir=scan.nextInt();//当前指令的方向
	    	int num=scan.nextInt();//要数的人数
	    	//对指令进行的处理,注意小人是按逆时针排序
	    	//当前小人朝里并向左数
	    	if(array[target].dir==0&&orderdir==0)   target=(target+dollnum-num)%dollnum;
	    	//当前小人朝里并向右数
	    	else if(array[target].dir==0&&orderdir==1) target=(target+num)%dollnum;
	    	//当前小人朝外并向左数
	    	else if(array[target].dir==1&&orderdir==0) target=(target+num)%dollnum;
	    	//当前小人朝外并向右数
	    	else target=(target+dollnum-num)%dollnum;		
	    }
	    
		System.out.println(array[target].name);

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值