0
点赞
收藏
分享

微信扫一扫

7-71 跳跃 (50 分)

写心之所想 2022-01-28 阅读 19

7-71 跳跃 (50 分)

Drizzle 被困到一条充满数字的方块路中,假设这条路由一个非负的整数数组m组成,Drizzle 最开始的位置在下标 start 处,当他位于下标i位置时可以向前或者向后跳跃m[i]步数,已知元素值为0处的位置是出口,且只能通过出口出去,不可能数组越界,请你通过编程计算出Drizzle能否逃出这里。

要求:

输入:第一行输入数组m的长度n 第二行输入数组元素,空格分割开 第三行输入起始下标start

示例:

输入:

7
4 2 3 0 3 1 2
5

输出:

True

范围:

  • 1 <= m.length <= 5 * 10^4
  • 0 <= m[i] < m.length
  • 0 <= start < m.length
  • #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int n, m[50000];
    int Visited[50000];
    int index=0;
    void Visit(int start,const int* m) {	
    	if (Visited[start] != 1&&start>=0&&start<n&&m[start]!=0) {
    		Visited[start] = 1; 
    		Visit(start - Visited[start],m);
    		Visit(start + Visited[start], m);
    	}
    	if (m[start] == 0&&start>=0&&start<n)
    		index=1;
    }
    int main() {
    	int i;
    	int start;
    	scanf("%d", &n);
    	for (i = 0; i < n; i++)
    		scanf("%d", &m[i]);
    	scanf("%d", &start);
    	Visit(start, m);
    	if (index)
    		printf("True");
    	else
    		printf("False");
    	system("pause");
    	return 0;
    }

举报

相关推荐

0 条评论