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 |
求高人给看看代码,好几天了,纠结中,实在不知道错在哪了,刚刚学的编程,见谅啊,代码有点乱!!#include<iostream> #include<algorithm> #include <stack> using namespace std; char ch; int type,i,n,t1,t2,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) { t1=-1; if(ch=='m') while(1) { ch=getchar(); if(ch>='0'&&ch<='9') { if(t1==-1) t1=ch-'0'; else t2=ch-'0'; } if(ch=='t') type=1; if(ch=='r') type=2; if(ch=='\n') break; } if(ch=='p') while(1) { ch=getchar(); if(ch>='0'&&ch<='9') { if(t1==-1) t1=ch-'0'; else t2=ch-'0'; } if(ch=='t') type=3; if(ch=='r') type=4; 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<10;i++) cout<<b[i]<<"\t"; cout<<"\n";*/ 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