UVA-4.5-追踪单元格-512
来源:互联网 发布:淘宝怎么申请买保健品 编辑:程序博客网 时间:2024/06/13 13:33
UVA-4.5-追踪单元格-512
题目描述:
=,=太长不想写
链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=832&page=show_problem&problem=453
大意就是对表格进行增添删除列或者行的操作,寻找操作前和操作后某单元格的位置的变回,也就是追踪单元格。
题目分析:
这个题我想的办法是建立两个一摸一样的表格,对每个单元格用数字进行标记,操作完成后查找标记数字的位置就可以了。
对于每种操作,可以写一个函数来实现,注意题目中的增删行列是整体增删,比如散去第二行和第四行,不是在散去第二行后在新形成的表格中删去第四行,而是在旧表格中删去第二行和第四行。
这里我想用数组存下要删去或者增加的行和列,注意要进行排序,然后运用关系式进行改变。
注意:一开始写代码的时候注意到了要排序,但是后来犯懒没写,导致WA了好多次
TAT。
给出代码:
#include <stdlib.h>#include <stdio.h>#include <string.h>//int num[110][110];void EX(int p[110][110],int *m,int *n){ //printf("1\n"); int a,b,c,d,t; scanf("%d%d%d%d",&a,&b,&c,&d); t=p[a][b]; p[a][b]=p[c][d]; p[c][d]=t;}void DC(int p[110][110],int *m,int *n){ //printf("2\n"); int N,i,j,k,t; scanf("%d",&N); int num[50]; for(i=0;i<N;i++) scanf("%d",&num[i]); for(i=0;i<N-1;i++) for(j=0;j<N-1-i;j++) { if(num[j]>num[j+1]) { t=num[j]; num[j]=num[j+1]; num[j+1]=t; } } for(k=0;k<N;k++) { int a=num[k]-k; //scanf("%d",&a); //int i,j; for(i=1;i<=*m;i++) { for(j=a;j<*n;j++) { p[i][j]=p[i][j+1]; } } *n=*n-1; }}void DR(int p[110][110],int *m,int *n){ //printf("3\n"); int N,i,j,k,t; scanf("%d",&N); int num[50]; for(i=0;i<N;i++) scanf("%d",&num[i]); for(i=0;i<N-1;i++) for(j=0;j<N-1-i;j++) { if(num[j]>num[j+1]) { t=num[j]; num[j]=num[j+1]; num[j+1]=t; } } for(k=0;k<N;k++) { int a=num[k]-k; for(i=1;i<=*n;i++) { for(j=a;j<*m;j++) { p[j][i]=p[j+1][i]; //printf("i=%d,j=%d\n",i,j); } } *m=*m-1; }}void IC(int p[110][110],int *m,int *n){ //printf("4\n"); int N; scanf("%d",&N); int num[50],i,j,k,t; for(i=0;i<N;i++) scanf("%d",&num[i]); for(i=0;i<N-1;i++) for(j=0;j<N-i-1;j++) { if(num[j]>num[j+1]) { t=num[j]; num[j]=num[j+1]; num[j+1]=t; } } for(k=0;k<N;k++) { int a=num[k]+k; for(i=1;i<=*m;i++) { for(j=*n+1;j>=a;j--) { if(j!=a) { p[i][j]=p[i][j-1]; } else { p[i][j]=0; } } } *n=*n+1; }}void IR(int p[110][110],int *m,int *n){ //printf("5\n"); int N,i,j,k,t; scanf("%d",&N); int num[50]; for(i=0;i<N;i++) scanf("%d",&num[i]); for(i=0;i<N-1;i++) for(j=0;j<N-i-1;j++) { if(num[j]>num[j+1]) { t=num[j]; num[j]=num[j+1]; num[j+1]=t; } } for(k=0;k<N;k++) { int a=num[k]+k; for(i=1;i<=*n;i++) { for(j=*m+1;j>=a;j--) { if(j!=a) { p[j][i]=p[j-1][i]; } else { p[j][i]=0; } } } *m=*m+1; }}int main(){ int book1=0; int m,n; while(scanf("%d%d",&m,&n)!=EOF) { if(m==0&&n==0) break; book1++; if(book1!=1) printf("\n"); int num1[110][110]; int num2[110][110]; //int m,n; memset(num1,0,sizeof(num1)); memset(num2,0,sizeof(num2)); //scanf("%d%d",&m,&n); int count=0; int i,j; for(i=1;i<=m;i++) for(j=1;j<=n;j++) { count++; num1[i][j]=count; num2[i][j]=count; } int num; scanf("%d",&num); char comd[5]; while(num--) { scanf("%s",comd); //printf("%s\n",comd); int k=strcmp(comd,"DR"); if(k==0) { DR(num1,&m,&n); } else { k=strcmp(comd,"DC"); if(k==0) { DC(num1,&m,&n); } else { k=strcmp(comd,"IR"); if(k==0) { IR(num1,&m,&n); } else { k=strcmp(comd,"IC"); if(k==0) { IC(num1,&m,&n); } else { EX(num1,&m,&n); } } } } } int N; int x,y; scanf("%d",&N); printf("Spreadsheet #%d\n",book1); while(N--) { scanf("%d%d",&x,&y); int mark=0; int book=num2[x][y]; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { if(book==num1[i][j]) { //printf("%d %d\n",i,j); mark=1; break; } } if(mark) break; } if(mark) printf("Cell data in (%d,%d) moved to (%d,%d)\n",x,y,i,j); else printf("Cell data in (%d,%d) GONE\n",x,y); mark=0; } //printf("\n"); } return 0;}
0 0
- UVA-4.5-追踪单元格-512
- uva 512 追踪电子表格中的单元格
- 追踪电子表格中的单元格(uva-512)
- uva 512 追踪电子表格中的单元格
- 例题 4-5 追踪电子表格中的单元格(Spreadsheet Tracking) UVa 512
- uva512追踪电子表格中的单元格
- 例题4-5 追踪电子表格中的单元格 UVa512
- 追踪
- UVa Problem 849 Radar Tracking (雷达追踪)
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 追踪电子表格中的单元格Uva512
- uva 512
- uva 512
- UVA-512
- uva 512
- uva 512
- UVa 512
- MB1A 追踪
- MB1A 追踪
- JVM 参数
- 2017 必须学的编程语言
- 【典型例题】一个接口与多态的分析笔记
- 桶排序(基数排序)
- centos 安装 mysql
- UVA-4.5-追踪单元格-512
- CentOS 上的 FirewallD 简明指南
- Android 系列 5.10使用Paint.NET从OpenClipArt.org创建Easy Launcher图标
- python基础——语句_控制语句
- 逆波兰计算器
- 关于fasterxml-jackson发生Can not deserialize instance of异常原因验证
- 博客系统的数据库设计
- Error: Your project contains C++ files but it is not using a supported native build system
- CTS 认证abc