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 <stdio.h> #include <string.h> #include <ctype.h> int main() { int n; int block[30][30]; int a,b; char command[20]; char command1[10]; char command2[10]; int add1[2]; int add2[2]; int top[30]; int i,j,k,l; freopen("input.txt","r",stdin); scanf("%d",&n); for(i=0;i<n;i++) { block[i][1]=i; top[i]=1; } scanf("%s",command1); while(command1[0]!='q') { scanf("%d",&a); scanf("%s",command2); scanf("%d",&b); if(a==b) { scanf("%s",command1); continue; } if(command1[0]=='m'&&command2[1]=='n') { for(i=0;i<n;i++) { if(top[i]==0) { continue; } else { for(j=1;j<=top[i];j++) { if(block[i][j]==a) { add1[0]=i; add1[1]=j; } } } } for(i=0;i<n;i++) { if(top[i]==0) { continue; } else { for(j=1;j<=top[i];j++) { if(block[i][j]==b) { add2[0]=i; add2[1]=j; } } } } if(add1[0]==add2[0]) { scanf("%s",command1);continue; } else { for(i=add1[1]+1;i<=top[add1[0]];i++) { top[block[add1[0]][i]]=1; block[block[add1[0]][i]][1]=block[add1[0]][i]; } top[add1[0]]=add1[1]; for(i=add2[1]+1;i<=top[add2[0]];i++) { top[block[add2[0]][i]]=1; block[block[add2[0]][i]][1]=block[add2[0]][i]; } top[add2[0]]=add2[1]; top[add2[0]]++; block[add2[0]][top[add2[0]]]=block[add1[0]][add1[1]]; top[add1[0]]--; } } else if(command1[0]=='m'&&command2[1]=='v') { for(i=0;i<n;i++) { if(top[i]==0) { continue; } else { for(j=1;j<=top[i];j++) { if(block[i][j]==a) { add1[0]=i; add1[1]=j; } } } } for(i=0;i<n;i++) { if(top[i]==0) { continue; } else { for(j=1;j<=top[i];j++) { if(block[i][j]==b) { add2[0]=i; add2[1]=j; } } } } if(add1[0]==add2[0]) { scanf("%s",command1);continue; } else { for(i=add1[1]+1;i<=top[add1[0]];i++) { top[block[add1[0]][i]]=1; block[block[add1[0]][i]][1]=block[add1[0]][i]; } top[add1[0]]=add1[1]; top[add2[0]]++; block[add2[0]][top[add2[0]]]=block[add1[0]][add1[1]]; top[add1[0]]--; } } else if(command1[0]=='p'&&command2[1]=='n') { for(i=0;i<n;i++) { if(top[i]==0) { continue; } else { for(j=1;j<=top[i];j++) { if(block[i][j]==a) { add1[0]=i; add1[1]=j; } } } } for(i=0;i<n;i++) { if(top[i]==0) { continue; } else { for(j=1;j<=top[i];j++) { if(block[i][j]==b) { add2[0]=i; add2[1]=j; } } } } if(add1[0]==add2[0]) { scanf("%s",command1);continue; } else { for(i=add2[1]+1;i<=top[add2[0]];i++) { top[block[add2[0]][i]]=1; block[block[add2[0]][i]][1]=block[add2[0]][i]; } top[add2[0]]=add2[1]; for(i=add1[1];i<=top[add1[0]];i++) { top[add2[0]]++; block[add2[0]][top[add2[0]]]=block[add1[0]][i]; } top[add1[0]]=add1[1]-1; } } else if(command1[0]=='p'&&command2[1]=='v') { for(i=0;i<n;i++) { if(top[i]==0) { continue; } else { for(j=1;j<=top[i];j++) { if(block[i][j]==a) { add1[0]=i; add1[1]=j; } } } } for(i=0;i<n;i++) { if(top[i]==0) { continue; } else { for(j=1;j<=top[i];j++) { if(block[i][j]==b) { add2[0]=i; add2[1]=j; } } } } if(add1[0]==add2[0]) { scanf("%s",command1);continue; } else { for(i=add1[1];i<=top[add1[0]];i++) { top[add2[0]]++; block[add2[0]][top[add2[0]]]=block[add1[0]][i]; } top[add1[0]]=add1[1]-1; } } scanf("%s",command1); } for(i=0;i<n;i++) { printf("%d:",i); for(j=1;j<=top[i];j++) { printf(" %d",block[i][j]); } printf("\n"); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator