題目描述:
有一個數據表格為二維數組(數組元素為int類型),行長度為ROW_LENGTH,列長度為COLUMN_LENGTH。對該表
格中數據的操作可以在單個單元內,也可以對一個整行或整列進行操作,操作包括交換兩個單元中的數據;插入某
些行或列。
請編寫程序,實現對表格的各種操作,并跟蹤表格中數據在進行各種操作時,初始數據在表格中位置的變化軌跡。
詳細要求:
1.數據表規格的表示方式為“行*列”, 數據表元素的位置表示方式為[行,列],行列均從0開始編號
2.數據表的最大規格為9行*9列,對表格進行操作時遇到超出規格應該返回錯誤
3.插入操作時,對m*n表格,插入行號只允許0~m,插入列號只允許0~n。超出范圍應該返回錯誤
4.只需記錄初始表格中數據的變化軌跡,查詢超出初始表格的數據應返回錯誤
例如: 初始表格為4*4,可查詢的元素范圍為[0,0]~[3,3],假設插入了第2行,數組變為5*4,
查詢元素[4,0]時應該返回錯誤
5.查詢數據要求返回一個鏈表,鏈表中節點的順序即為該查詢的數據在表格中的位置變化順序(需包含初始位置)
輸入描述:
1 表格的行列值
2 要交換的兩個單元格的行列值
3 輸入要插入的行的數值
4 輸入要插入的列的數值
5 輸入要獲取運動軌跡的單元格的值
輸出描述:1 初始化表格是否成功,若成功則返回0, 否則返回-1
2 輸出交換單元格是否成功
3 輸出插入行是否成功
4 輸出插入列是否成功
5 輸出要查詢的運動軌跡的單元查詢是否成功
輸入例子:
3 4
1 1
0 1
2
1
2 2
輸出例子:
0
0
0
0
0
算法實現:#include<iostream> #include<vector> #include<iomanip> using namespace std; //************************************************ // * Author: 趙志乾 // * Date: 2017-2-21 // * Declaration: All Rigths Reserved !!! //***********************************************/ int main() { int row,col; cin>>row>>col; int initrow=row,initcol=col; if(row<0||row>9||col<0||col>9) { cout<<-1<<endl; } else { cout<<0<<endl; } vector<vector<int> >ret(row,vector<int>(col,0)); int x1,x2,y1,y2; cin>>x1>>y1>>x2>>y2; if(x1>row-1||x1<0||y1>col-1||y1<0) { cout<<-1<<endl; } else { cout<<0<<endl; } int newrow,newcol; cin>>newrow; if(newrow>=0&&newrow<=row) { row++; cout<<0<<endl; } else { cout<<-1<<endl; } cin>>newcol; if(newcol>=0&&newcol<=col) { col++; cout<<0<<endl; } else { cout<<-1<<endl; } int searchpointx,searchpointy; cin>>searchpointx>>searchpointy; if(searchpointx>=0&&searchpointy<row&&searchpointy>=0&&searchpointy<col) { cout<<0<<endl; } else { cout<<-1<<endl; } return 0; }
新聞熱點
疑難解答
圖片精選