| ||||||||||
| 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 | |||||||||
那位1208已AC的大虾贴一下代码,小弟急坏了In Reply To:到底怎样才行? Posted by:anonym11 at 2004-08-24 15:16:31 > 我的代码如下,display()错在哪儿了?
> #include<iostream>
> #include<cstring>
> using namespace std;
>
> int st[26][26]= {0};
> int x[26];
> int y[26];
> int n;
>
> inline void back(int a)
> {
> int i,p,c = x[a];
> for(i = y[a]+1 ;p = st[c][i];i ++)
> { x[p] = p;y[p] = 1;st[c][i] = 0;st[p][1] = p; }
> }
> void mvov(int a,int b)
> {
> back(a);
> st[x[a]][y[a]] = 0;
> for(int i = y[b] ;st[x[b]][i];i ++);
> x[a] = x[b];y[a] = i; st[x[a]][i] = a;
> }
> void mvon(int a,int b)
> {
> back(b);
> mvov(a,b);
> }
> void plov(int a,int b)
> {
> int i,c = x[a],d = x[b],p,h;
> for(h = y[b];st[x[b]][h];h ++);
> for(i = y[a];p = st[c][i] ;i ++)
> {
> st[c][i] = 0;
> x[p] = d;y[p] = h++;
> st[x[b]][h-1] = p;
> }
> }
> void plon(int a,int b)
> {
> back(b);
> plov(a,b);
> }
> void display()
> {
> int i,j;
> for(i = 1;i <= n;i ++)
> {
> printf(" %d: ",i-1);
> if(!st[i][1])
> ;
> else
> for(j = 1;st[i][j];j ++)
> printf(" %d",(st[i][j]-1));
> cout << endl;
> }
> }
>
> int main()
> {
> int a,b,i;
> void (*f[4])(int,int);
> char s[10],t[10];
> scanf("%d",&n);
> for( i = 1;i <= n;i ++)
> {
> st[i][1] = i;x[i] = i; y[i] = 1;
> }
> f[0] = mvon;f[1] = mvov;f[2] = plon;f[3] = plov;
> scanf("%s",s);
> while(s[0] != 'q')
> {
> scanf("%d%s%d",&a,t,&b);
> a++;b++;
> if(x[a] != x[b])
> f[2 * strcmp(s,"move") + strcmp(t,"onto")](a,b);
> scanf("%s",s);
> }
> display();
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator