输入描述:
输入数据按下列顺序输入:
1 表格的行列值
2 要交换的两个单元格的行列值
3 输入要插入的行的数值
4 输入要插入的列的数值
5 输入要查询的单元格的坐标
输出描述:
输出按下列顺序输出:
1 初始化表格是否成功,若成功则返回0, 否则返回-1
2 输出交换单元格是否成功
3 输出插入行是否成功
4 输出插入列是否成功
5 输出查询单元格数据是否成功
方法1:写了个类,把需要的函数都放进去
题目不难,就是读着很绕口。
1 表格的行列值
判断是否小于等于9行9列
2 要交换的两个单元格的行列值
判断两个单元格的坐标是否超出m行n列(注意是0开始算起的,0 ~ m-1, 0 ~ n-1)
3 输入要插入的行的数值
判断输入值是否超出m行 x<0||x>m-1
判断是否当前列表行数已满(9行不能再添加)m>8
4 输入要插入的列的数值
同3
5 输入要查询的单元格的坐标
同2
#include<iostream>
#include<vector>
using namespace std;
class solution{
public:
int initialization(int m,int n);
int change(int x1,int y1,int x2,int y2);
int insert_row(int x);
int insert_col(int y);
int find(int x,int y);
private:
int m,n;
vector<vector<int>> data;
};
//输入m和n,初始化m*n大小的表格。
int solution::initialization(int m,int n){
if(m<=0||m>9||n<=0||n>9)
return -1;
this->m=m;
this->n=n;
data.resize(m);
for(int i=0;i<m;i++)
{
data[i].resize(n);
}
return 0;
}
//输入x1,y1,x2,y2,交换坐标在(x1,y1),(x2,y2)的两个数
int solution::change(int x1,int y1,int x2,int y2){
if(x1<0||x1>m-1||x2<0||x2>m-1||y1<0||y1>n-1||y2<0||y2>n-1)
return -1;
swap(data[x1][y1],data[x2][y2]);
return 0;
}
//输入x,在第x行左边添加一行
int solution::insert_row(int x){
if(x<0||x>m-1||m>8) //x超过现在行范围 或 现在已经达到9行(m=8)时fanh
return -1;
return 0;
}
//输入y,在第y行上方添加一列
int solution::insert_col(int y){
if(y<0||y>n-1||n>8)
return -1;
return 0;
}
//输入x,y,查找坐标为(x,y)
int solution::find(int x,int y){
if(x<0||x>m-1||y<0||y>n-1)
return -1;
else return 0;
}
int main(){
solution s;
int m,n,x1,y1,x2,y2,x,y,find_x,find_y;
while(cin>>m>>n>>x1>>y1>>x2>>y2>>x>>y>>find_x>>find_y){
cout<<s.initialization(m,n)<<endl;
cout<<s.change(x1,y1,x2,y2)<<endl;
cout<<s.insert_row(x)<<endl;
cout<<s.insert_col(y)<<endl;
cout<<s.find(find_x,find_y)<<endl;
}
return 0;
}知识点:复习了下类的使用。
private里的变量只能通过本类的成员函数访问。
连续多组测试的另一种写法:while(cin>>m>>n>>x1>>y1>>x2>>y2>>x>>y>>find_x>>find_y)。
this可以区分类的私有成员和函数参数(如果同名的话)。
方法2:
只为满足题目要求,把上面的条件复制粘贴下来
#include<iostream>
using namespace std;
int main(){
int m,n,x1,y1,x2,y2,x,y,find_x,find_y;
while(cin>>m>>n>>x1>>y1>>x2>>y2>>x>>y>>find_x>>find_y){
cout<<((m<=0||m>9||n<=0||n>9)?-1:0)<<endl;
cout<<((x1<0||x1>m-1||x2<0||x2>m-1||y1<0||y1>n-1||y2<0||y2>n-1)?-1:0)<<endl;
cout<<((x<0||x>m-1||m>8)?-1:0)<<endl;
cout<<((y<0||y>n-1||n>8)?-1:0)<<endl;
cout<<((find_x<0||find_x>m-1||find_y<0||find_y>n-1)?-1:0)<<endl;
}
return 0;
}知识点: (条件)?是的输出:否的输出

京公网安备 11010502036488号