首页 > 思科笔试编程
头像
-Metaphysics
编辑于 2020-09-07 19:55
+ 关注

思科笔试编程

给你一个非负整数数组,里面的值表示当前位置能够跳的最远距离,现在每次都从参数0开始跳,请问能跳到终点吗?
样例:
输入:[2,3,1,1,4]
输出:true

输入:[3,2,1,0,4]
输出:false

参考代码:dfs直接解
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>

using namespace std;
vector<int> nums;
bool sign = false;

void trans(string &str) {
	int n = str.size() - 1;
	int i = 1;
	while (i < n) {
		int loc = i;
		while (i < n&&str[i] != ',')
			++i;
		string s = str.substr(loc, i - loc);
		nums.push_back(stoi(s));
		++i;
	}
}

void isReach(int i) {
	if (i == nums.size() - 1) {
		sign = true;
		return;
	}
	int n = nums[i];
	for (int k = 1; k <= n; ++k) {
		i += k;
		isReach(i);
		i -= k;
	}
}

int main() {
	string str;
	getline(cin, str);
	trans(str);
	isReach(0);
	if (sign)
		cout << "true" << endl;
	else
		cout << "false" << endl;
}


全部评论

(0) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐