[深信服]狡兔三窟--非DP解法

本文介绍了如何用非动态规划(DP)的方法解决「狡兔三窟」问题。作者强调了在解决问题时理解"所见即所知"的重要性,并指出在猎人插桩后获取的信息可用于后续兔子位置的判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	题目描述:
	
	       假设兔子有n个排成一排的洞,编号为1和n。兔子每天晚上跳到相邻的一个洞里住,而猎人每天白天检查其中的一个洞。猎人告诉你每天检查的洞的编号,希望你分析一下是否一定能抓到兔子。
	
	输入描述:
	
	       首先输入n和k(n,k<1000),分别表示洞的个数和猎人要检查的天数;接下来输入k个整数,表示猎人每天检查的洞的编号。
	
	输出描述:
	
	       对于每个样例,如果一定能抓到兔子,输出Yes,否则输出No。
	
	示例:
	
	样例1:
	
	输入:
	
	3  2
	
	2  2
	
	输出:
	
	Yes

分析:关于这道题,网上的dp解法有很多,本人也是刷题的时候偶尔刷到的这道题。想到了一种非dp解法。
写这道题时,对一句话深有感触,即”所见即所知“,狡兔三窟也是一样的道理,
只需要每次都将猎人插桩后的结果当成本次要寻找兔子的有效依据

	import java.util.Scanner;
	
	public class BadRabbit {
	
	    public static void main (String[] args) {
	        Scanner sc = new Scanner(System.in);
	        int hoels = sc.nextInt();
	        int times = sc.nextInt();
	
	        int[] arr = new int[hoels];
	        for (int i=0; i < hoels; i++)//step1:将所有兔子可能出现得洞标1
	            arr[i] = 1;
	
	        for (int i=0; i < times; i++){
	            int poi = sc.nextInt()-1;
	            arr[poi] = 0;
	            int[] tmp = new int[hoels];//step2:标记兔子不可能出现的洞为0
	
	            for (i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值