UVa 512 Spreadsheet Tracking
来源:互联网 发布:网络培训班 编辑:程序博客网 时间:2024/06/05 18:16
- 针对一个表格的插入、删除行列,和交换两个cell的操作。
- 开始的一个对(r,c)表示datasheet的行和列数
- 第二行的数字表示要执行的操作的数目
- 后面跟着多个操作,包括EX,DC,DR,IC,IR
- 然后是一个整数,表示要查询操作的个数
- 多个cell的坐标
- 以(0,0)对完成输入
- 输出:首先表明这是第几个表;
- 输出:对于每一个查询,首先输出原来的cell的位置,然后输出当前的位置,如果被删除了,则输出GONE
- 输出:每两个表之间输出一个空行。
#include<iostream>#include<string>using namespace std;/*struct Ele {int rOld;int cOld;};const int ArrSize = 100000;Ele** sheetArr;int rowNum, colNum;void DR(unsigned int r) {for (int i = r; i < rowNum; ++i)for (int j = 1; j <= colNum; ++j) sheetArr[i][j] = sheetArr[i + 1][j];rowNum--;}void DC(unsigned int c) {for (int j = c; j < colNum; ++j)for (int i = 1; i <= rowNum; ++i)sheetArr[i][j] = sheetArr[i][j + 1];colNum--;}void IC(unsigned int c) {for (int j = colNum; j >= c; --j)for (int i = 1; i <= rowNum; ++i)sheetArr[i][j + 1] = sheetArr[i][j];for (int i = 1; i <= rowNum; ++i)sheetArr[i][c] = { 0,0 };colNum++;}void IR(unsigned int r) {for (int i = rowNum; i >= r; --i)for (int j = 1; j <= colNum; ++j)sheetArr[i + 1][j] = sheetArr[i][j];for (int j = 1; j <= colNum; ++j)sheetArr[r][j] = { 0,0 };rowNum++;}void EX(unsigned int rPre, unsigned int cPre, unsigned int rNew, unsigned int cNew) {Ele temp;temp = sheetArr[rPre][cPre];sheetArr[rPre][cPre] = sheetArr[rNew][cNew];sheetArr[rNew][cNew] = temp;}void print(){for (int i = 1; i <= rowNum; ++i) {for (int j = 1; j <= colNum; ++j)cout << sheetArr[i][j].cOld << "," << sheetArr[i][j].rOld << " ";cout << endl;}}Ele find(int r, int c){Ele temp = { 0,0 };for (int i = 1; i <= rowNum; ++i)for (int j = 1; j <= colNum; ++j)if (sheetArr[i][j].rOld == r && sheetArr[i][j].cOld == c) {temp = { i, j };return temp;}return temp;}voidarrInit(int r,int c){ for (int i = 1; i <= r; ++i)for (int j = 1; j <= c; ++j)sheetArr[i][j] = { i,j };}int main(){#ifndef UVaFILE *fp;freopen_s(&fp, "data.in.txt", "r", stdin);freopen_s(&fp, "data.out.txt", "w", stdout);#endifsheetArr = new Ele*[ArrSize];for (int i = 0; i < ArrSize; ++i)sheetArr[i] = new Ele[ArrSize];int cnt = 0;//sheet number countwhile (cin >> rowNum >> colNum) {if (rowNum == 0 || colNum == 0)break;arrInit(rowNum, colNum);cnt++;int operCnt;cin >> operCnt;for (int i = 0; i < operCnt; ++i) {string cmd;int rcNum;cin >> cmd;if (cmd == "DR") {cin >> rcNum;for (int i = 0; i < rcNum; ++i) {int rLoc;cin >> rLoc;DR(rLoc-i);}}if (cmd == "DC") {cin >> rcNum;for (int i = 0; i < rcNum; ++i) {int rLoc;cin >> rLoc;DC(rLoc-i);}}if (cmd == "IC") {cin >> rcNum;for (int i = 0; i < rcNum; ++i) {int rLoc;cin >> rLoc;IC(rLoc+i);}}if (cmd == "IR") {cin >> rcNum;for (int i = 0; i < rcNum; ++i) {int rLoc;cin >> rLoc;IR(rLoc+i);}}if (cmd == "EX") {int rPre, cPre, rNew, cNew;cin >> rPre >> cPre >> rNew >> cNew;EX(rPre, cPre, rNew, cNew);}}//read operation forint qryNum;cin >> qryNum; cout << "Spreadsheet #" << cnt << endl;for (; qryNum > 0; --qryNum){int r, c;cin >> r >> c;Ele nowPos = find(r, c);if (nowPos.cOld == 0 || nowPos.rOld == 0)cout << "Cell data in (" << r << ","<< c << ") GONE" << endl;elsecout << "Cell data in (" << r << ","<< c << ") moved to (" <<nowPos.rOld << ","<< nowPos.cOld << ")" << endl;}//process query forcout << endl;}//read r,c while return 0;}
0 0
- UVA - 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
- UVa 512 Spreadsheet Tracking
- UVa 512 - Spreadsheet Tracking
- UVa 512 Spreadsheet Tracking
- 【水题】UVA 512 Spreadsheet Tracking
- 例题4-5 uva 512 - Spreadsheet Tracking
- UVa 512 - Spreadsheet Tracking (模拟)
- 紫书章四 Spreadsheet Tracking UVA
- 512 - Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- 512 - Spreadsheet Tracking
- 判断Range 使字符串 本别显示不同颜色
- view.getX和view.getTranslationX区别
- angular2 quickstart
- listview与ScrollView冲突的解决办法
- iOS Provisioning Profile(Certificate)与Code Signing详解
- UVa 512 Spreadsheet Tracking
- iOS开发问题之:此Apple ID尚未在iTunes Store使用过......
- Reverse Nodes in k-Group
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- Android模拟后台进程被杀
- 【VC小项目】-13.2形状类族的中的纯虚函数
- 欢迎使用CSDN-markdown编辑器
- Reactor模式详解
- qq分享时mainActivity的主要代码