Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

大家帮我看看 怎么老是WA啊 这是1057题 郁闷多天了

Posted by ykstars at 2005-05-21 10:17:26
我用数组做的!!呵呵 郁闷多天了 也不想改数据结构了


#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator