题意:在一个row*col的矩阵里,留了n个青蛙的脚印。已知每只青蛙的步长是一定的,且都是从一个边界外,跳到了另一边的边界外,而且跳的是直线。每跳落地就留一个脚印在那个格子。现在问你那只在地里留下最多脚印的青蛙留下了多少只脚印(只要有可能就好)。
思路
首先针对 x 从小到大排序,然后枚举,这样为后面的剪枝提供了方便;
2.对于剪枝,因为题目中明确说了:青蛙是从外面跳进来,至少踩了 3 个黑点,然后跳出去的,于是可以加下面剪枝:a. 确定 2 点之间的间距之后,确定出发点之前的那个点是否在稻田外面,如果不是则剪枝;
b. 根据当前最优情况,确定当前的点只要要走多少步才能找到一个更优解,相当于是一个启发式的剪枝;
代码
1 | #include<iostream> |