您的位置:首页 > 其它

算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 追踪电子表格中的单元格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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: