[英]Compress a 2D array into a 1D Array
我有一个四边形(2D数组),该数组由范围从0到255的数字组成,并且该数组的最频繁值(在我的情况下为2)是背景值
我必须将除背景值以外的所有数组值(我必须忽略所有包含2的情况)以这种排列方式放置在1D数组中
行,列,值,行,下一列,下一个值
例如我有
{2,3,2,2},
{2,2,2,2},
在一维数组中,它将像{ 1,2,3,}
我添加了空格以使其更具可读性
这是我的数组
int image1[MAXL][MAXC]=
{
{2,3,2,2},
{2,2,2,2},
{2,255,2,2},
{255,2,2,2},
{2,255,2,2}
};
和循环
for (int i = 0; i<nbc;i++)
{
for (int j=0; j<nbl;j++)
{
if (image1[j][i]==BackColor)
{
}
else
}
}
nbc和nbl分别是列数和行数
谢谢你的帮助
编辑:我完全失败了我的示例,我没有忽略2,现在应该可以了
使用std::vector
简单方法
std::vector<int> result;
for (int i = 0; i<MAXL;i++)
{
for (int j=0; j<MAXC;j++)
{
if (image1[i][j] != BackColor) // Notice !=
{
result.push_back(i+1);
result.push_back(j+1);
result.push_back(image1[i][j]);
}
}
}
for (auto x : result)
{
std::cout << x << " ";
}
std::cout << endl;
输出:
1 2 3 3 2 255 4 1 255 5 2 255
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.