华为机试——输出最小跳跃次数

题目描述

* 题目描述:给出一组正整数,你从第一个数向最后一个数方向跳跃,
*         每次至少跳跃1格,每个数字的值表示你这个位置可以跳跃的最大长度。
*         计算如何以最少的跳跃次数跳到最后一个数。
* 输入描述:
*         第一行表示有多少个数n 
*         第二行依次是1到n,一个数一行。
* 输出描述:
*         输出一行,表示跳跃最少的次数

代码实现

/******************************************************************
* 题目描述:给出一组正整数,你从第一个数向最后一个数方向跳跃,
* 		每次至少跳跃1格,每个数字的值表示你这个位置可以跳跃的最大长度。
* 		计算如何以最少的跳跃次数跳到最后一个数。
* 输入描述:
* 		第一行表示有多少个数n 
* 		第二行依次是1到n,一个数一行。
* 输出描述:
* 		输出一行,表示跳跃最少的次数
*****************************************************************/
#include 
#include 
#include 
#include 
#include 

#define NUM_BUF_SIZE		100		/* 最大可存储的数字数量 */

int main()
{
	int input[NUM_BUF_SIZE],res[NUM_BUF_SIZE];
	int num;
	int i=0,j=0;
	int temp = INT_MAX;
	
	scanf("%d",&num);
	
	memset(input,0,sizeof(input));
	memset(res,0,sizeof(res));
	
	while(i= i)			/* 找到可以跳出当前的点的值 */
            {
                temp = temp <= (res[j] + 1) ? temp : (res[j] + 1);
            }
        }
        res[i] = temp;
    }
	printf("%d\n",res[num-1]);
}

测试描述

输入:

7

2

3

2

1

2

1

5

输出:

3

华为机试——输出最小跳跃次数_第1张图片

注意事项

你可能感兴趣的:(各类面试)