/*
题目出处:LeetCode
题目序号:55. 跳跃游戏
题目叙述:给你一个非负整数数组 nums ,你最初位于数组的第一个下标位置 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。
*/
程序清单
#include<stdio.h>
#define TRUE 1
#define FALSE 0
int TestJump(int *nums, int length) {
int index;
int farthest = 0; // 最远距离
int jump[length];
for(index = 0; index < length; index++){
jump[index] = index + nums[index];
}
if (length == 1) {
printf("可以跳到最后。"); // 如果起始位置就是终点,则可以到达
return TRUE;
}
for (index = 0; index <= farthest; index++) {
if(farthest < jump[index]) {
farthest = jump[index];
}
if (farthest >= length - 1) {
printf("可以跳到最后。");
return TRUE;
}
}
printf("无法跳到最后。");
return FALSE;
}
int main() {
int n,i;
printf("请输入您想测试的数组的长度:\n");
scanf("%d",&n);
int a[n];
printf("请输入数组元素:\n");
for (i=0;i<n;i++){
scanf("%d",&a[i]);
}
TestJump(a,n);
return 0;
}
运行结果