蓝桥杯(java)个人赛真题:小朋友崇拜圈

39 篇文章 6 订阅
23 篇文章 0 订阅

小朋友崇拜圈

			班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)。
			在一个游戏中,需要小朋友坐一个圈,
			每个小朋友都有自己最崇拜的小朋友在他的右手边。
			求满足条件的圈最大多少人?
			
			小朋友编号为1,2,3,...N
			输入第一行,一个整数N(3<N<100000)
			接下来一行N个整数,由空格分开。
			
			要求输出一个整数,表示满足条件的最大圈的人数。
			
			例如:
			输入:
			9
			3 4 2 5 3 8 4 6 9
			
			则程序应该输出:
			4
			
			解释:
			如图p1.png所示,崇拜关系用箭头表示,红色表示不在圈中。
			显然,最大圈是[2 4 5 3] 构成的圈
			
			
			再例如:
			输入:
			30
			22 28 16 6 27 21 30 1 29 10 9 14 24 11 7 2 8 5 26 4 12 3 25 18 20 19 23 17 13 15
			
			程序应该输出:
			16
			
			资源约定:
			峰值内存消耗(含虚拟机) < 256M
			CPU消耗  < 1000ms
			
			
			请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
			
			所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
			不要使用package语句。不要使用jdk1.7及以上版本的特性。
			主类的名字必须是:Main,否则按无效代码处理。
			![](https://img-blog.csdnimg.cn/20190304150430653.png)

思路:
这题,我忘了当初怎么理解的题目,反正现在是看不懂了,先贴答案,以后再布思路,有大佬懂得求私信;

package Lqb;

public class Text35 {
	static int N=30;	//N个小朋友
	static int max=0;
	static String maxStr="";
	public static void main(String[] args) {
		String str="22 28 16 6 27 21 30 1 29 10 9 14 24 11 7 2 8 5 26 4 12 3 25 18 20 19 23 17 13 15"; 	//N个小朋友对应崇拜的对象
		String quang="";		//崇拜圈临时变量
		String[] arr=str.split(" ");
		for(int i=0;i<arr.length;i++){
			quang=i+1+" ";
			dg(i+1,quang,arr);
		}
		System.out.println("最大圈="+max+"  ["+maxStr+"]");
	}
	public static void dg(int i,String quang,String[] arr){
		if(quang.split(" ")[0].equalsIgnoreCase(arr[i-1])){	//找到圈
			//System.out.println("找到圈= "+quang);
			if(quang.split(" ").length>max){
				 max=quang.split(" ").length;
				 maxStr=quang;
			}
			return;
		}
		quang+=arr[i-1]+" ";
		//System.out.println(quang);
		if(!quang.split(" ")[0].equalsIgnoreCase(arr[i-1])&&quang.split(" ").length>N){	//死循环圈
			return;
		}
		dg(Integer.parseInt(arr[i-1]),quang,arr);
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值