| ||||||||||
| 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 | |||||||||
求助JAVA类变量初始化。。。主函数跑到第一个for就挂了,咋回事捏?
import java.util.*;
class Main{
static class Heap{
int HeapSize,index[]=new int[1000010];
class W
{
char c;
int next,ldp,ldn,ed;
};
W []d=new W[1000010];
class WW
{
int sum,place;
};
boolean cmp(Heap.WW A,Heap.WW B)
{
return A.sum>B.sum||A.sum==B.sum&&A.place<B.place;
}
WW []Heap=new WW[1000010];
void HeapUp(int p)
{
int q=p>>1;
WW a=Heap[p];
while(q!=0)
{
if(cmp(a,Heap[q]))
{
Heap[p]=Heap[q];
index[Heap[p].place]=p;
}
else break;
p=q;
q=p>>1;
}
Heap[p]=a;
index[Heap[p].place]=p;
}
void AddToHeap(WW a)
{
Heap[++HeapSize]=a;
HeapUp(HeapSize);
}
void HeapDown(int p)
{
int q=p<<1;
WW a=Heap[p];
while(q<=HeapSize)
{
if(q<HeapSize&&cmp(Heap[q+1],Heap[q]))q++;
if(cmp(Heap[q],a))
{
Heap[p]=Heap[q];
index[Heap[p].place]=p;
}
else break;
p=q;
q=p<<1;
}
Heap[p]=a;
index[Heap[p].place]=p;
}
int GetTopFromHeap()
{
int TopElement=Heap[1].place;
Heap[1]=Heap[HeapSize--];
HeapDown(1);
return TopElement ;
}
void BuildHeap () // Remember to Let HeapSize = N
{
for(int i=HeapSize;i>0;i--)
HeapDown(i);
}
};
public static void main(String args[])
{
Heap H=new Heap();
int i,head,bg,qt,ht,ps;
Scanner cin=new Scanner(System.in);
String t=new String("1"),s=cin.next();
t+=s;
for(i=1;i<t.length();i++)
H.d[i].c=t.charAt(i);
for(head=0,i=1;i<t.length();i++)
if(t.charAt(i)==t.charAt(i-1))
{
H.d[i-1].next=i;
H.Heap[H.HeapSize].sum++;
}
else
{
H.d[head].ed=i-1;
H.d[head].ldn=i;
H.d[i].ldp=head;
head=i;
H.Heap[++H.HeapSize].place=i;
H.Heap[H.HeapSize].sum=1;
H.index[i]=H.HeapSize;
}
H.d[head].ed=i-1;
H.BuildHeap();
while(H.HeapSize>0&&H.Heap[1].sum>1)
{
i=bg=H.GetTopFromHeap();
System.out.print(H.d[bg].c);
for(;H.d[i].next!=0;i=H.d[i].next)
System.out.print(' '+i);
System.out.println(' '+i);
qt=H.d[bg].ldp;
ht=H.d[bg].ldn;
H.d[qt].ldn=ht;
H.d[ht].ldp=qt;
if(H.d[qt].c==H.d[ht].c)
{
H.d[H.d[qt].ed].next=ht;
H.d[qt].ed=H.d[ht].ed;
H.d[qt].ldn=H.d[ht].ldn;
H.d[H.d[ht].ldn].ldp=qt;
H.Heap[H.index[qt]].sum+=H.Heap[H.index[ht]].sum;
H.HeapUp(H.index[qt]);
H.index[H.Heap[H.HeapSize].place]=H.index[ht];
H.Heap[H.index[ht]]=H.Heap[H.HeapSize--];
ps=H.Heap[H.index[ht]].place;
H.HeapUp(H.index[ps]);
H.HeapDown(H.index[ps]);
}
}
}
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator