/*
题目出处:LeetCode
题目序号:55. 跳跃游戏
题目叙述:给你一个非负整数数组 nums ,你最初位于数组的第一个下标位置 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。
*/
程序清单
#include<stdio.h>
#define TRUE 1
#define FALSE 0
int TestJump(int *a, int length) {
int i;
int farthest = 0; // 最远距离
if (length == 1) {
printf("可以跳到最后。");
return TRUE;
}
for (i = 0; i <= farthest; i++) {
if(farthest < a[i] + i) {
farthest = a[i] + i;
}
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;
}
运行结果