CF767A Snacktower


题目传送门

思路:

在每一天判断当前掉落的蛋糕是否是现在需要摆放的蛋糕。

如果是,那么把储存的蛋糕从后往前逐个枚举,看是否可以继续放。

否则将这个蛋糕存着。

完整代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	bool a[100005];//a[i] 为 1 ,则代表重量为 i 的大小的蛋糕已经出现,否则没有 
	int n,x;//n 为总天数, x 是当前掉落蛋糕的大小
	cin>>n;
	int now=n;//now 为当前需要放的蛋糕的大小(初始化为 n )
	memset(a,0,sizeof(a));//a 数组初始化为 0 
	for(int i=1;i<=n;i++){
		cin>>x;
		a[x]=1;//标记当前大小的蛋糕已经出现 
		if(x==now){//当前蛋糕需要摆放 
			cout<<now<<" ";//输出当前蛋糕的大小 
			now--;//需要的蛋糕的大小 -1 
			while(a[now]==1){//当现在存储的蛋糕还可以继续摆放时 
				cout<<now<<" ";//输出当前蛋糕的大小 
				now--;//需要的蛋糕的大小 -1 
			}
		}
		cout<<endl;//注意换行 
	}
	return 0;//完美结束 
}

文章作者: alex_liu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 alex_liu !
  目录