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 |
Re:求高人给看看代码,好几天了,纠结中,实在不知道错在哪了,刚刚学的编程,见谅啊,代码有点乱!!In Reply To:求高人给看看代码,好几天了,纠结中,实在不知道错在哪了,刚刚学的编程,见谅啊,代码有点乱!! Posted by:13091264 at 2010-11-13 14:46:10 不用麻烦了,小弟写了个数据生成器,找到问题了,都是因为平时的编程习惯不好,下面是AC了的代码 #include<iostream> #include<algorithm> #include <stack> using namespace std; char ch; int type,i,n,t1,t2,k,b[50]; stack <int>a[50]; stack<int>track; void move_onto() { if(b[t1]!=b[t2]) { while(1) { if(a[b[t1]].top()==t1) break; i=a[b[t1]].top(); a[i].push(i); a[b[t1]].pop(); b[i]=i; } while(1) { if(a[b[t2]].top()==t2) break; i=a[b[t2]].top(); a[i].push(i); a[b[t2]].pop(); b[i]=i; } a[b[t2]].push(t1); a[b[t1]].pop(); b[t1]=b[t2]; } } void move_over() { if(b[t1]!=b[t2]) { while(1) { if(a[b[t1]].top()==t1) break; i=a[b[t1]].top(); a[i].push(i); a[b[t1]].pop(); b[i]=i; } a[b[t2]].push(t1); a[b[t1]].pop(); b[t1]=b[t2]; } } void pile_onto() { if(b[t1]!=b[t2]) { while(1) { if(a[b[t2]].top()==t2) break; i=a[b[t2]].top(); a[i].push(i); a[b[t2]].pop(); b[i]=i; } while(1) { i=a[b[t1]].top(); track.push(i); a[b[t1]].pop(); if(i==t1) break; } while(track.size()) { i=track.top(); a[b[t2]].push(i); b[i]=b[t2]; track.pop(); } } } void pile_over() { if(b[t1]!=b[t2]) { while(1) { i=a[b[t1]].top(); track.push(i); a[b[t1]].pop(); if(i==t1) break; } while(track.size()) { i=track.top(); a[b[t2]].push(i); b[i]=b[t2]; track.pop(); } } } int main() { cin>>n; for(i=0;i<n;i++) { a[i].push(i); b[i]=i; } ch=getchar(); while(1) { k=-1; t1=t2=0; if(ch=='m') while(1) { ch=getchar(); if(ch>='0'&&ch<='9') { if(k==-1) t1=10*t1+(ch-'0'); else t2=10*t2+(ch-'0'); } if(ch=='t') { type=1;k++; } if(ch=='r') { type=2;k++; } if(ch=='\n') break; } if(ch=='p') while(1) { ch=getchar(); if(ch>='0'&&ch<='9') { if(k==-1) t1=10*t1+(ch-'0'); else t2=10*t2+(ch-'0'); } if(ch=='t') { type=3;k++; } if(ch=='r') { type=4;k++; } if(ch=='\n') break; } if(ch=='q') break; if(type==1) move_onto(); if(type==2) move_over(); if(type==3) pile_onto(); if(type==4) pile_over(); ch=getchar(); } for(i=0;i<n;i++) { printf("%d:",i); while(a[i].size()) { track.push(a[i].top()); a[i].pop(); } while(track.size()) { printf(" %d",track.top()); track.pop(); } printf("\n"); } system("pause"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator