7-3 Pop Sequence (25分)*

该博客介绍了如何使用栈来解决一个问题,即给定一个整数数组a和两个整数m和n,判断是否可以通过将数组中的元素按顺序依次压入栈,然后弹出元素的方式,使得最后栈中只剩下一个元素且其值为数组的最后一个元素。如果可以,输出YES,否则输出NO。
摘要由CSDN通过智能技术生成

obtain 获得
capacity 容纳能力

int a[1005];

int main() {
	int m, n, k;
	cin >> m >> n >> k;
	while(k --) {
		for(int i = 0; i < n; i ++) cin >> a[i];
		
		int index = 1;
		bool f = 0;
		stack<int> s;
		
		for(int i = 0; i < n; i ++) {
			while(s.empty() || s.top() != a[i]) {
				s.push(index ++);
				if(s.size() > m) {
					f = 1;
					break;
				}
			}
			if(f) break;
			s.pop();
		}
		f == 0 ? cout << "YES\n" : cout << "NO\n";
	}
	return 0;
}

不断尝试栈顶是否能弹出数列当前值
如不能弹出,就持续将index入栈,直到能弹出数列值
如能够弹出数列最后一个值,输出YES,如直到栈满也无法达到数值 输出NO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值