题目描述:
假设兔子有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