题目大意:有n块石头,礼物在第m块石头上,相邻石头的距离为1,规定小青蛙第一步跳到第一块石头上,接下来的跳跃要符合该规则,假设这是第n次跳跃,那么小青蛙跳跃的距离为(2 * n - 1),且每次跳跃都必须跳到石头上
解题思路:石头数量如果超过49的话,小青蛙就可以跳到任意一块石头上,其他的情况只需暴力dfs就可以解决了
#include<cstdio>
#include<cstring>
int pos, len;
bool dfs(int cur, int time) {
if(cur == pos)
return true;
int l = time * 2 - 1;
if(cur + l <= len && dfs(cur + l, time + 1))
return true;
if(cur - l > 0 && dfs(cur - l, time + 1))
return true;
return false;
}
int main() {
int n, m;
while(scanf("%d%d",&len, &pos) == 2 && len + pos) {
if(len >= 50) {
printf("Let me try!\n");
continue;
}
if(dfs(1,2))
printf("Let me try!\n");
else
printf("Don‘t make fun of me!\n");
}
return 0;
}
时间: 2024-09-29 19:23:55