Example_5

任务:跳跃游戏

思路:

​ 使用一个不带头节点的循环单链表,设定一个变量为1,然后通过不断的遍历,来找到第n个节点,然后把这个节点删除。变量置1,重新循环,直到链表中只有一个节点即p->next = p;

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>

int main()
{
int arr[] = {4,3,1,1,2,1,1};
int k = sizeof(arr)/sizeof(arr[0]);
int s = 0;
int i = 0,m = 1;
int n,T;
T = 0;
while (i < k)
{
for (m; m <= arr[i]; m++)
{
if (arr[i + m] + m > s)
{
s = arr[i + m] + m;
n = m;

}
}
i = i + n;
T++;
}
printf("%d", T);
return 0;
}