80pts求找错
查看原帖
80pts求找错
853801
useful_algorithms楼主2023/12/6 21:50

先给一下代码:

#include<iostream>
#include<stack>
using namespace std;
int n,c;
int a[100005];
stack <int> st;
int main(){
	cin>>n>>c;
	for(int i=1;i<=n;i++) cin>>a[i];
	int cnt=0;
	int j=1;
	while(cnt+st.size()<n){
		int xb=-1,minn=0x7f7f7f7f;
		for(int i=j;i<=j+c-st.size()-1;i++){
			if(a[i]<minn){
				minn=a[i];
				xb=i;
			}
		}
		if(st.empty()||minn<st.top()){
			for(j;j<=xb;j++){
				st.push(a[j]);
			}
		}
		cout<<st.top()<<' ';
		st.pop();
		cnt++;
	}
	while(!st.empty()){
		cout<<st.top()<<" ";
		st.pop();
	}
	return 0;
}

解释一下思路:每次看一下在栈能容纳的前提下,最小的数值是多少,并找到下标,然后比较最小数值和栈顶元素哪个小,栈顶小就不动,否则就一直入栈到那个最小的元素,最后输出栈顶元素,但是子任务1全错,子任务0有两个点错,请问是为什么

2023/12/6 21:50
加载中...