Jumping Frog

题目连接: Jumping Frog

大致题意:

一只青蛙从原点出发, 路途中有些点不可达, 每次最远跳跃d, 询问最少跳多少次可以到达终点

解题思路:

暴力dfs深搜

AC代码:

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int c, d; char s[1000];
int res = 0x7fffffff;
bool dfs(int index = 1, int num = 0) {
	if (index + d >= c) { res = num + 1; return 1; } 
	bool flag = 0; //最先找到的一定是最优的, 因为我们先递归的是较远的路程
	for (int i = d; i >= 1; --i) {
		if (s[index + i] != 'X') flag = dfs(index + i, num + 1);
		if (flag) return 1;
	}
	return 0;
}
int main(void)
{
	int t; cin >> t;
	for (int T = 1; T <= t; ++T) {
		scanf("%d %d", &c, &d); scanf("%s", s + 1); d++;
		res = 0x7fffffff; dfs();

		printf("Day #%d\n", T);
		printf("%d %d\n", c, d - 1);
		printf("%s\n", s + 1);
		res == 0x7fffffff ? printf("%d\n", 0) : printf("%d\n", res);
		if (T != t) printf("\n");
	}
	return 0;
}

END

展开阅读全文
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值