512 - Spreadsheet Tracking
来源:互联网 发布:淘宝网腊肠灌肠机 编辑:程序博客网 时间:2024/06/05 17:24
出了很多意想不到的问题和错误,再次让我意识到调试能力的重要性。
#include<stdio.h>
#include<string.h>#include<stdlib.h>
#define BIF 10000
int a[75][75],s[75][75];
int r,c;
char ans[5];
int bbs[100];
int cmp(const void *a ,const void *b)
{
return *(int *)a-*(int *)b;
}
void exchange(int r1,int c1,int r2,int c2)
{
int t;
t=a[r1][c1];
s[r1][c1]=a[r1][c1]=a[r2][c2];//a和s数组要同时改
s[r2][c2]=a[r2][c2]=t;
}
void delet(int t)
{
int i,j,n;
if(ans[1]=='R')
{
for(n=0;n<t;n++){
for(i=1;i<=c;i++)
s[bbs[n]][i]=a[bbs[n]][i]=-1;//要置换成-1,不然会和插入一行空格那里出现错误
}
int m=1;
for(i=1;i<=r;i++)
{
if(s[i][1]==-1)
continue;
for(j=1;j<=c;j++)
a[m][j]=s[i][j];
m++;
}
r=r-t;
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
s[i][j]=a[i][j];
}
}
}
if(ans[1]=='C')
{
for(n=0;n<t;n++){
for(i=1;i<=r;i++)
s[i][bbs[n]]=a[i][bbs[n]]=-1;
}
int m=1;
for(i=1;i<=c;i++)
{
if(s[1][i]==-1)
continue;
for(j=1;j<=r;j++)
a[j][m]=s[j][i];
m++;
}
c=c-t;
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
s[i][j]=a[i][j];
}
}
}
}
void insert(int t)
{
int i,j,n,zzp=0,m=0;
if(ans[1]=='R')
{
for(n=0;n<t;n++){
for(i=1;i<=c;i++)
a[bbs[n]+m][i]=0;
for(i=bbs[n]+m;i<=r;i++)
for(j=1;j<=c;j++)
a[i+1][j]=s[i][j];
m+=1; r++;
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
s[i][j]=a[i][j];
}
}
}
}
if(ans[1]=='C')
{
for(n=0;n<t;n++){
for(i=1;i<=r;i++)
a[i][bbs[n]+m]=0;
for(j=bbs[n]+m;j<=c;j++)
for(i=1;i<=r;i++)
a[i][j+1]=s[i][j];
m+=1;c++;
for(i=1;i<=r;i++){
for(j=1;j<=c;j++){
s[i][j]=a[i][j];
}
}
}
}
}
int main()
{
int i,j,n,t,x,q,r1,r2,c1,c2,kase=0;
while(scanf("%d%d",&r,&c)!=EOF)
{
if(r==0&&c==0)
return 0;
for(i=1;i<=r;i++)
for(j=1;j<=c;j++)
a[i][j]=s[i][j]=i*BIF+j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",ans);
if(ans[0]=='E')
{
scanf("%d%d%d%d",&r1,&c1,&r2,&c2);
exchange(r1,c1,r2,c2);
}
else
{
memset(bbs,0,sizeof(bbs));
scanf("%d",&t);
for(j=0;j<t;j++)
{
scanf("%d",&bbs[j]);
}
qsort(bbs,t,sizeof(int),cmp);
if(ans[0]=='D')
delet(t);
else
insert(t);
}
}
memset(s,0,sizeof(s));
if(kase)
printf("\n");
scanf("%d",&q);
int r0,c0;
int d,e;
printf("Spreadsheet #%d\n",++kase);
int k;
for(k=0;k<q;k++)
{
scanf("%d%d",&r0,&c0);
int l=0;
for(i=1;i<=r;i++){
for(j=1;j<=c;j++)
if(r0==a[i][j]/BIF&&c0==a[i][j]%BIF){
d=i;e=j;l=1;break;
}
if(l==1)
break;
}
if(l==0)
printf("Cell data in (%d,%d) GONE\n",r0,c0);
else
printf("Cell data in (%d,%d) moved to (%d,%d)\n",r0,c0,d,e);
}
}
return 0;
}
0 0
- 512 - Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- UVA - 512 Spreadsheet Tracking
- Uva - 512 - Spreadsheet Tracking
- UVA - 512 Spreadsheet Tracking
- UVA-512 Spreadsheet Tracking
- UVa 512 Spreadsheet Tracking
- uva 512 Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- UVa 512 Spreadsheet Tracking
- UVa 512 Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- UVa 512 - Spreadsheet Tracking
- UVa 512 Spreadsheet Tracking
- 【水题】UVA 512 Spreadsheet Tracking
- Spreadsheet Tracking
- Spreadsheet Tracking
- Spreadsheet Tracking
- 今天开始学习大数据
- Delphi常用属性
- 使用filter解决get请求中文乱码问题
- Activity生命周期
- Android UI编程(7)——Fragment
- 512 - Spreadsheet Tracking
- 【VBA研究】循环中用VBA在单元格中输入公式
- arcgis for javascript 画图结束添加多个图形问题
- CRM(客户关系管理系统)项目框架搭建
- shujukuyouhua
- 呵呵
- 冬令营第四天
- JAVASCRIPT进阶书籍介绍
- centos下利用rpm包安装mysql