vijos P1062 迎春舞會之交誼舞
來源:程序員人生 發布時間:2015-05-15 07:48:11 閱讀次數:3668次
這題被歸類為棧,所以用棧來做咯;
整體思想還是括號匹配,不過關鍵在于如何求出相互匹配的兩人中夾雜著多少個男生,我的方法是定義結構體記錄每一個人左側男生的個數
#include<iostream>
#include<stack>
#define maxn 1500+5
using namespace std;
struct stu
{
int a,sex;//a位,該人(不管男女)左側男生的個數,sex為該人的性別;
};
stack<stu>root;
int f[maxn];//讀入數據的貯存
int g[maxn];// 記錄第i個女生與她前1個女生之間夾著多少個男生;
int re[maxn];//記錄結果
int main()
{
int n;
while(cin>>n)
{
f[0]=0;
for(int i=1;i<=n;i++) cin>>f[i];
for(int i=1;i<=n;i++) g[i]=f[i]-f[i⑴];
while(root.size()) root.pop();//清空
int sum=0;
for(int i=1;i<=n;i++)
{
for(int j=0;j<g[i];j++)
{
stu x;
x.a=sum;
x.sex=1;
root.push(x);
sum++;
}
re[i]=sum-root.top().a;
root.pop();
}
cout<<re[1];
for(int i=2;i<=n;i++) cout<<" "<<re[i];
cout<<endl;
}
return 0;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈