AT4894 题解

题目传送门

小学生又双叒叕来写题解啦!

翻了一下大家的思路,都用了数组,其实根本不用,可以一边读入一边判断。

由于只需考虑前后两个数,所以只用两个变量就能实现滚动数组。

若前数大于后数,由于前数已经执行过操作,而后数无法改变大小关系,因此直接爆掉

若前数等于后数,再改变后数时便不符合要求,所以什么都不做

若前数小于后数,根据贪心的思路,直接给后数减一比什么都不做好。

送上满分代码:

#include <iostream>
#include <cstdio>
#define Error {printf("No\n"); return 0;}
using namespace std;

int main()
{
	int n, now, last;
	scanf("%d", &n);
	scanf("%d", &now);
	for (int i = 2; i <= n; i++)
	{
		last = now;
		scanf("%d", &now);
		if (last < now) now--;
		else if (last > now) Error
	}
	printf("Yes\n");  //千万别忘了换行。
	return 0;		
}

首发:2022-02-03 17:18:37

posted @ 2022-08-25 00:07  liangbowen  阅读(14)  评论(0编辑  收藏  举报