算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 追踪电子表格中的单元格Uva512
2016-07-28 19:28
483 查看
<img src="https://img-blog.csdn.net/20160728195811515?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="https://img-blog.csdn.net/20160728195825034?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="https://img-blog.csdn.net/20160728195834125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />#include<stdio.h> #include<string.h> #include<stdlib.h> int x,i,j,temp=0,flag=0,y,A[100][100]={}; void DR(char cmd[3]) { if(strcmp(cmd,"DR")==0) { for(j=0;A[i][j]!=-1;j++) { if(A[i][j]<x) { temp++; } else if(A[i][j]==x) { flag=1; break; } } x=x-temp; temp=0; } } void DC(char cmd[3]) { if(strcmp(cmd,"DC")==0) { for(j=0;A[i][j]!=-1;j++) { if(A[i][j]<y) { temp++; } else if(A[i][j]==y) { flag=1; break; } } y=y-temp; temp=0; } } void IC(char cmd[3]) { if(strcmp(cmd,"IC")==0) { for(j=0;A[i][j]!=-1;j++) { if(A[i][j]<=y) { temp++; } } y=y+temp; temp=0; } } void IR(char cmd[3]) { if(strcmp(cmd,"IR")==0) { for(j=0;A[i][j]!=-1;j++) { if(A[i][j]<=x) { temp++; } } x=x+temp; temp=0; } } void EX(char cmd[3]) { if(strcmp(cmd,"EX")==0) { if(x==A[i][0]&&y==A[i][1]) { x=A[i][2]; y=A[i][3]; } else if(x==A[i][2]&&y==A[i][3]) { x=A[i][0]; y=A[i][1]; } } } int main() { //freopen("c:\\1.txt","r",stdin); int r,c,command,q,n,k,x1,y1,NO=1,ncmd; char cmd[100][3]={}; while(scanf("%d%d",&r,&c)!=EOF) { for(i=0;i<100;i++) { for(j=0;j<100;j++) { A[i][j]=-1; } } if(r==0||&c==0) break; if(NO==1) printf("Spreadsheet #%d\n",NO++); else printf("\nSpreadsheet #%d\n",NO++); scanf("%d",&command); for(i=0;i<command;i++) { scanf("%s",cmd[i]); if(strcmp(cmd[i],"EX")!=0) { scanf("%d",&n); ncmd=n; for(j=0;j<n;j++) { scanf("%d",&A[i][j]); } } else { scanf("%d%d%d%d",&A[i][0],&A[i][1],&A[i][2],&A[i][3]); } } scanf("%d",&q); while(q--) { scanf("%d%d",&x,&y); x1=x;y1=y; for(i=0;i<command;i++) { DC(cmd[i]); DR(cmd[i]); IC(cmd[i]); IR(cmd[i]); EX(cmd[i]); } if(flag==0) printf("Cell data in (%d,%d) moved to (%d,%d)\n",x1,y1,x,y); else if(flag==1||x<0||x>r||y<0||y>c) printf("Cell data in (%d,%d) GONE\n",x1,y1); flag=0; } } }
相关文章推荐
- CentOS7 install apache
- windows下搭建php开发环境
- Java命名规则
- boost::xtime和::xtime会冲突
- XListView上拉加载,下拉刷新
- socket通信――UDP
- Fragment做的导航滑动
- 一些忠告给想转行当程序员的你
- css系列(7)成品网页
- 使用Visual Studio(VS)开发Qt程序代码提示功能的实现
- 带着O_CREAT和O_RDWR进入linux系统调用open函数
- Triangle
- len,counta,& “”连接符号,字符串长度,非空单元格数量
- poj 3170
- volatile
- HDU3652 B-number(数位DP)
- Android studio jni编译以及第三方so库的引用
- View
- [038]如何选择机器学习分类器?
- HDU 5775 Bubble Sort 树状数组