竞赛讨论区 > 求助第四题,最后输出NO和时间的判断出了点问题
头像
码农小王a
发布于 01-05 22:43
+ 关注

求助第四题,最后输出NO和时间的判断出了点问题

#include<stdio.h>
int main(){	
	int n,m,count=0;					//n为总路程  m为生命上限 count为途中安全点的数量 
	int i,j,k; 
	scanf("%d %d",&n,&m);
	int M=m,t=n-1;							// M 为当前生命 
	int A[n];
	int B[n];
	for(i=0;i<n;i++){			//输入马马的路程至A[n],并保存安全区的位置至B[n] 
		scanf("%d",&A[i]);
		if(A[i]==0){
			B[i]=i;
			count++;
		}
		else
			B[i]=-1;
	}
	int C[count],sum=0;
	for(j=0;j<n;j++){			//算出每两个安全点之间所扣除的血量 存储在C[count] 
		if(B[j]!=j){
			sum+=A[j];
			C[j]=-1;
		}
		else 
			C[j]=sum;
	} 
	int index=0;
	for(k=0;k<n;k++){			// 模拟路径 
		if(C[k]!=-1){		//抵达下个安全点所扣除的血量 
			if(M>C[k]){
				M-=C[k];
			}
			else {
				if(m>C[k]){		//如果生命上限大于抵达下一安全点所扣的血量则  选择加血 
					t+=(m-M);
					M=m; 
				}
				else if(m<=C[k])			
					index=1;
			}
		}
	}
		if(index)
			printf("NO");
		else 
			printf("%d",t);
}

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐