| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
大家帮我看看 怎么老是WA啊 这是1057题 郁闷多天了我用数组做的!!呵呵 郁闷多天了 也不想改数据结构了
#include <iostream>
#include <string>
using namespace std;
void main()
{
int i,j,h;
int dirnum=0;
int a[10000],k=0,b[10000][10];
int flag;
int xx;
int n;
int lay;
string ss[10000];
while(1)
{
dirnum++;
lay=0;n=0;flag=-1;k=0;
cin>>ss[0];
if(ss[0]=="#") return;
n++;
for(i=1; ;i++){
cin>>ss[i];
if(ss[i]=="*")break;n++;
}
for(i=0;i<10000 ;i++)a[i]=0;
a[0]=1;b[0][0]=-1;
for(i=0;i<10000;i++)
for(j=0;j<50;j++)
b[i][j]=-2;
k=0;
for(i=0;i<n;i++)
if(ss[i].at(0)=='f'){
b[k][a[k]]=i;
a[k]++;
for(h=0;h<k;h++){b[h][a[h]]=-1;a[h]++;}
}
else if(ss[i].at(0)=='d'){
k++;a[k]=a[k-1];b[k][a[k]]=i;a[k]++;
for(h=0;h<k;h++){b[h][a[h]]=-1;a[h]++;}
}
else if(ss[i].at(0)==']'){
k--;a[k]=a[k+1];
}
if(dirnum>1)cout<<endl;
cout<<"DATA SET "<<dirnum<<":"<<endl;
cout<<"ROOT"<<endl;
for(i=0;i<100;i++)if(a[i]==0)break;
lay=i;
for(i=0;i<lay;i++)for(h=a[i]-1;h>=0;h--){
if(b[i][h]==-1){
if(i==0&&h==0)continue;
for(k=h-1;k>=0;k--)
if(b[i][k]>=0) if(ss[b[i][k]].at(0)=='f')
{ b[i][h]=b[i][k];b[i][k]=-1;
for(j=i+1;j<lay;j++)
for(xx=k;xx<h;xx++)
b[j][xx]=b[j][xx+1];
break;
}
}
}
string temp="\0";
int max;
for(i=0;i<lay;i++)for(h=a[i]-1;h>=0;h--){
max=h;
if(b[i][h]>=0) if(ss[b[i][h]].at(0)=='f')
for(temp=ss[b[i][h]],xx=h-1;xx>=0;xx--)
if(b[i][xx]>=0){
if(ss[b[i][xx]]>temp){
temp=ss[b[i][xx]];
max=xx;
}
}
j=b[i][h];
b[i][h]=b[i][max];
b[i][max]=j;
}
for(h=0;h<=n;h++)for(k=0,i=0;i<lay;i++){
if(h==0&&i==0)continue;
if(b[i][h]==-2)k++;
else if(b[i][h]==-1)k++;
else if(b[i][h]>=0){
for(j=0;j<k;j++)cout<<"| ";cout<<ss[b[i][h]]<<endl;break;
}
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator