vector数组求调
  • 板块学术版
  • 楼主EarthWave
  • 当前回复10
  • 已保存回复10
  • 发布时间2023/1/5 19:55
  • 上次更新2023/10/24 05:27:50
查看原帖
vector数组求调
924529
EarthWave楼主2023/1/5 19:55
#include<bits/stdc++.h>
using namespace std;
vector< vector<int> >q;
vector<int>v;
int n,p=0,np=0;
int a[10005],na[10005];
int head[10005]={},tail[10005]={};
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);cout.tie(nullptr);
	cin>>n;
	if(n==0)return 0;
	cin>>a[0];
	v.push_back(a[0]);
	for(int i=1;i<n;i++){
		cin>>a[i];
		if(a[i]<a[i-1]){
			p++;
			q.push_back(v);
			while(!v.empty()){
				v.pop_back();
			}
		}
		tail[p]++;
		v.push_back(a[i]);
	}
	int num=n;
	q.push_back(v);
	p++;
	cout<<p<<'\n';
	for(int i=0;i<p;i++){
		for(int j=0;j<tail[i];j++){
			cout<<q[i][j]<<' ';
		}
		cout<<'\n';
	}
	cout<<'\n';
	while(num--){
		int mn=0;
		for(int i=0;i<p;i++){
			if(head[i]>tail[i])continue;
			if(q[i][head[i]]<q[mn][head[mn]])mn=i;
		}
		cout<<q[mn][head[mn]]<<' ';
		na[np++]=q[mn][head[mn]];
		head[mn]++;
	}
//	for(int i=0;i<n;i++){
//		cout<<na[i];
//	}
}

运行这个代码,vector所存储的总会莫名没掉一个元素,而最下面输出又会少掉其他元素,不知道是怎么回事,求大佬调试

2023/1/5 19:55
加载中...