关于代码能力
来源:互联网 发布:网络犯罪案例 编辑:程序博客网 时间:2024/05/20 02:54
代码能力是很重要的,像我,稍微复杂一点的题就做得想吐。
写了个200line+的代码,就已经写的想吐了。重新构思敲一遍得了。
最讨厌的就是无力感啊!
#include<iostream>#include<cstdio>#define MN 555555#define l Recnt&1#define r (Recnt+1)&1using namespace std;struct Node{ int next[2],val,id; }deque[MN<<1],stL[MN<<1],stR[MN<<1];int Recnt,topL,topR;int N,M,L,R;void init(){ topL=topR=Recnt=0; for( int i=1;i<=N;i++ ) { scanf( "%d",&deque[i].val ); deque[i].next[0]=i-1; deque[i].next[1]=i+1; deque[i].id=i; } deque[0].next[1]=1; deque[0].next[0]=-1; deque[0].id=0; deque[N+1].next[1]=-1; deque[N+1].next[0]=N; deque[0].id=N+1;}void print(){ bool f=true; for( int i=0;i<topL;i++ ) { if( f ) printf("%d",stL[i].val ); else printf( " %d",stL[i].val ); f=false; } for( int i=Recnt&1?R:L;;i=deque[i].next[r] ) { if( f ) printf( "%d",deque[i].val ); else printf( " %d",deque[i].val ); f=false; if( l && i==L ) break; if( r && i==R ) break; } for( int i=topR-1;i>=0;i-- ) { if( f ) printf( "%d",stR[i].val ); else printf( " %d",stR[i].val ); f=false; } printf( "\n" );}void solve(){ char str[111]; int val; scanf( "%d %d %d",&L,&R,&M ); for( int i=1;i<L;i++ ) stL[topL++]=deque[i]; for( int i=N;i>R;i-- ) stR[topR++]=deque[i]; getchar(); int NN=N+2; while( M-- ) { gets(str); if( !strcmp(str,"MoveLeft R") ) { if( Recnt&1 ) { stR[topR].id=L; stR[topR++]=deque[L]; L=deque[L].next[l]; } else { stR[topR].id=R; stR[topR++]=deque[R]; R=deque[R].next[l];} } else if( !strcmp(str,"MoveLeft L") ) { deque[L].next[l]=stL[topL-1].id; stL[topL-1].next[r]=L; topL--; L=deque[L].next[l]; } else if( !strcmp(str,"MoveRight R") ) { deque[R].next[r]=stR[topR-1].id; stR[topR-1].next[l]=R; topR--; R=deque[R].next[r]; } else if( !strcmp(str,"MoveRight L") ) { if( Recnt&1 ) { stL[topL].id=R; stL[topL++]=deque[R]; R=deque[R].next[r]; } else { stL[topL].id=L; stL[topL++]=deque[L]; L=deque[L].next[r]; } } else if( sscanf(str,"Insert L %d",&val) ) { if( Recnt&1 ) { deque[NN].val=val; deque[NN].next[l]=R; deque[NN].next[r]=deque[R].next[r]; deque[deque[R].next[r]].next[l]=NN; deque[R].next[r]=NN++; //R=deque[R].next[r]; } else { deque[NN].val=val; deque[NN].next[l]=deque[L].next[l]; deque[NN].next[r]=L; deque[deque[L].next[l]].next[r]=NN; deque[L].next[l]=NN++; L=deque[L].next[l]; } } else if( sscanf(str,"Insert R %d",&val) ) { if( Recnt&1 ) { deque[NN].val=val; deque[NN].next[l]=deque[L].next[l]; deque[NN].next[r]=L; deque[deque[L].next[l]].next[r]=NN; deque[L].next[l]=NN++; L=deque[L].next[l]; } else { deque[NN].val=val; deque[NN].next[l]=R; deque[NN].next[r]=deque[R].next[r]; deque[deque[R].next[r]].next[l]=NN; deque[R].next[r]=NN++; R=deque[R].next[r]; } } else if( !strcmp(str,"Delete L") ) { if( Recnt&1 ) { deque[deque[R].next[l]].next[r]=deque[R].next[r]; deque[deque[R].next[r]].next[l]=deque[R].next[l]; R=deque[R].next[r]; } else { deque[deque[L].next[l]].next[r]=deque[L].next[r]; deque[deque[L].next[r]].next[l]=deque[L].next[l]; L=deque[L].next[r]; } } else if( !strcmp(str,"Delete R") ) { if( Recnt&1 ) { deque[deque[L].next[l]].next[r]=deque[L].next[r]; deque[deque[L].next[r]].next[l]=deque[L].next[l]; L=deque[L].next[l]; } else { deque[deque[R].next[l]].next[r]=deque[R].next[r]; deque[deque[R].next[r]].next[l]=deque[R].next[l]; R=deque[R].next[l]; } } else if( !strcmp(str,"Reverse") ) { Recnt^=1; } //print(); }}int main(){ freopen( "test.in","r",stdin ); freopen( "test.out","w",stdout ); int T; scanf( "%d",&T ); while( T-- ) { scanf( "%d",&N );init();solve();print(); } return 0;}
- 关于代码能力
- 代码能力
- 代码能力
- 如何提高代码能力
- SGU103代码能力训练
- 代码实现能力啊!!!!
- 关于敏捷能力
- 测试杀毒软件能力的代码
- 有关代码能力的思考
- 增强代码可重用能力
- 通过代码提高编程能力
- 提高写代码的能力
- 如何锻炼写代码能力
- 提高写代码的能力
- 提高写代码的能力
- 提升编码能力,阅读代码
- 关于CMM(能力成熟度模型)
- 关于 IT的学习能力
- 安卓连接ad hoc 网络
- 网上找的一些django教程
- Linux下Terminal的快捷操作
- 联想笔记本硬件驱动官网下载地址
- java技术支持 输入工具类
- 关于代码能力
- java技术支持 输入输出学生信息
- [HTML]html链接 [大三TJB_708]
- Windows 2003 Install issue
- 2. 编写一个Java应用程序,用户从键盘输入一个1~9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、32
- java技术支持 计算消费总额
- 猜数字游戏。编写一个Java应用程序,实现功能:
- Microsoft Word 2007的一些操作
- java技术支持 计算各个位数之和