Spreadsheet Tracking
来源:互联网 发布:淘宝购物车导出excel 编辑:程序博客网 时间:2024/05/22 02:06
UVa 512
这道题如果直接操作步骤很麻烦,而且还容易出错,先将所有操作保存,
然后给定一个坐标后就每个操作进行变换,比如:插入行在当前坐标的
下面,那么插入的那行对当前坐标没有影响。
#include <stdio.h>const int maxn = 10005;struct node{ char ch[5]; int r1, c1, r2, c2; int n, x[25];}cmd[maxn];int r, c, n;int trans ( int & r0, int & c0 ) //采用引用{ for ( int i = 0; i < n; i ++ ) { if ( cmd[i].ch[0] == 'E' ) //直接交换 { if ( cmd[i].r1 == r0 && cmd[i].c1 == c0 ) r0 = cmd[i].r2, c0 = cmd[i].c2; //不要在下面接if,r0 c0已改变 else if ( cmd[i].r2 == r0 && cmd[i].c2 == c0 ) r0 = cmd[i].r1, c0 = cmd[i].c1; } else { int dx = 0, dy = 0; for ( int j = 0; j < cmd[i].n; j ++ ) { int x = cmd[i].x[j]; //行或列 if ( cmd[i].ch[0] == 'I' ) { if ( cmd[i].ch[1] == 'R' && x <= r0 ) dx ++; //行插入在x前面x就应该+1 if ( cmd[i].ch[1] == 'C' && x <= c0 ) dy ++; } else { if ( cmd[i].ch[1] == 'R' && x == r0 ) return 0; //删除了此行就直接返回 if ( cmd[i].ch[1] == 'C' && x == c0 ) return 0; if ( cmd[i].ch[1] == 'R' && x < r0 ) dx --; //删除在前面就减1 if ( cmd[i].ch[1] == 'C' && x < c0 ) dy --; } } r0 = r0+dx, c0 = c0+dy; } } return 1;}int main ( ){ int r0, c0, q, cas = 0; while ( ~ scanf ( "%d%d", &r, &c ) && r ) { scanf ( "%d", &n ); for ( int i = 0; i < n; i ++ ) //将操作保存 { scanf ( "%s", cmd[i].ch ); if ( cmd[i].ch[0] == 'E' ) scanf ( "%d%d%d%d", &cmd[i].r1, &cmd[i].c1, &cmd[i].r2, &cmd[i].c2 ); else { scanf ( "%d", &cmd[i].n ); for ( int j = 0; j < cmd[i].n; j ++ ) scanf ( "%d", &cmd[i].x[j] ); } } if ( cas ) //每个操作中有个换行,最后不需要换行 printf ( "\n" ); printf ( "Spreadsheet #%d\n", ++ cas ); scanf ( "%d", &q ); while ( q -- ) { scanf ( "%d%d", &r0, &c0 ); printf ( "Cell data in (%d,%d) ", r0, c0 ); if ( ! trans ( r0, c0 ) ) printf ( "GONE\n" ); else printf ( "moved to (%d,%d)\n", r0, c0 ); } } return 0;}
0 0
- Spreadsheet Tracking
- Spreadsheet Tracking
- Spreadsheet Tracking
- Spreadsheet Tracking
- UVa_512 - Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- UVA512 - Spreadsheet Tracking
- UVA - 512 Spreadsheet Tracking
- Uva - 512 - Spreadsheet Tracking
- UVA - 512 Spreadsheet Tracking
- UVA-512 Spreadsheet Tracking
- UVa512 - Spreadsheet Tracking
- UVa 512 Spreadsheet Tracking
- uva 512 Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- UVa 512 Spreadsheet Tracking
- UVa 512 Spreadsheet Tracking
- swift算法实践(3)-KMP算法字符串匹配
- android模拟器root,avd root,emulator root教程
- 魅族Flyme爆发,友商们该想想如何应对了
- Unity3D研究院之DontDestroyOnLoad的坑
- 升级Xcode之后VVDocumenter-Xcode不能用的解决办法
- Spreadsheet Tracking
- 读取一个文件夹下的所有文件
- mac Tunnelblink 登陆远程服务器配置
- 栈对于表达式求值的特殊作用&&UVa442 Matrix Chain Multiplication(矩阵链乘)的理解与解析
- 流动视图ScrollView
- iOS开发通讯知识
- 5-4 List Leaves (25分)
- 人,技术与流程-- 孙宇聪
- arcgis10.2 读取缓存切片的两种方式