跳跃的游戏 计蒜客 ------ACM随笔

给定一个非负整数数组,假定你的初始位置为数组第一个下标。

数组中的每个元素代表你在那个位置能够跳跃的最大长度。

请确认你是否能够跳跃到数组的最后一个下标。

例如:

A = [2,3,1,1,4],

return true.

A = [3,2,1,0,4],

return false.

格式:

第一行输入一个正整数n,接下来的一行,输入数组A[n]。如果能跳到最后一个下标,输出“true”,否则输出“false”

样例输入

5
2 0 2 0 1

样例输出

true                                                                                                                                                             

#include
using namespace std;

int main()
{
     int i,c=0,n,a[10000],z=0;
    cin>>n;
    for(i=0;i>a[i];
   if(n==1)  //个数为1的时候 && a[0]=0时候的特殊情况 
        {
            c=1;
            cout<<"true";
        }
    if(c!=1)
    {
        
     i=0;
     if(a[i]==0)
       {
        cout<<"false";
        z=1;
       } 
    if(z!=1)
    {
    
     while(a[i]!='\0')
        {
              i=i+a[i];
              if(i>n)
                  break;
              if(a[i]==0&&(i+1)!=n)
                {
                cout<<"false";    
                z=1;
                break;
                }
        } 
    
}
    if(z==0)
      cout<<"true"; 
  }     
    
    return 0;
}


想要解决这个问题 首先要了解 分辨一些情况  
 

特殊情况1: 当你的数据只有一组时(你的数据a[0]=.0) 他返回的也是true 
            当你的数据有2组时候 (a[0]=1 a[1]=0  ) 他返回的事业是true 

这是我这个程序中的特殊案例 。。

你可能感兴趣的:(ACM)