最近在Leetcode上练习一些题目
大致意思就是求一个矩阵的平均值
尽可能的对周围8个值求和加本身最后取平均
输入:M[][] = {{1,1,1},
{1,0,1},
{1,1,1}};
输出:{{0,0,0},
{0,0,0},
{0,0,0}};
解释:
对于(0,0) (0,2) (2,0) (2,2) 结果是3/4= 0.75=0(向小取值)
对于(0,1) (1,0) (1,2) (2,1) 结果是5/6=0.833333=0
对于(1,1) 结果是8/9 = 0.8888888=0
附上代码,不用客气!!!xixi
vector<vector<int>> imageSmoother(vector<vector<int>>& M) {
vector<vector<int>> arr;
vector<int> tmp;
int iFm = 0;//分母
int iFz = 0;//分子
int iret = 0;//结果
for(int i=0;i<M.size();++i)
{
iFm = 0;
iFz = 0;
tmp.clear();
for(int j=0;j<M[0].size();++j)
{
if(i-1>=0 && j-1>=0)
{
iFm++;//左上
iFz += M[i-1][j-1];
}
if(i-1>=0 && j+1<=M[0].size()-1)
{
iFm++;//右上
iFz += M[i-1][j+1];
}
if(i-1>=0)
{
iFm++;//上面
iFz += M[i-1][j];
}
if(j-1>=0)
{
iFm++;//左边
iFz += M[i][j-1];
}
if(j+1<=M[0].size()-1)
{
iFm++;//右边
iFz += M[i][j+1];
}
iFm++;//本身
iFz += M[i][j];
if(i+1<=M.size()-1 && j-1>=0)
{
iFm++;//左下
iFz += M[i+1][j-1];
}
if(i+1<=M.size()-1 && j+1<=M[0].size()-1)
{
iFm++;//右下
iFz += M[i+1][j+1];
}
if(i+1<=M.size()-1)
{
iFm++;//下面
iFz += M[i+1][j];
}
tmp.push_back((int)(iFz/iFm));
}
arr.push_back(tmp);
}
return arr;
}