请教一个二维数组的算法问题
一个二维数组,每个元素为0或者1。
现在需要找到并删除其中全为0的列,就是第一维全为0。当然,二维数组会因此列向收缩。
现在一直找不到一个合适的简单方法来实现,郁闷中。
谢谢各位。
[解决办法]
bool isEmpty(const vector <int> & v)
{
return v.empty() || (find_if(v.begin(), v.end(), identity <int> ()) == v.end());
}
int main()
{
vector <vector <int> > vv;
vv.push_back(vector <int> (10));
vv.push_back(vector <int> (10, 1));
vv.push_back(vector <int> (10));
vv.push_back(vector <int> (10, 2));
vv.erase(remove_if(vv.begin(), vv.end(), isEmpty), vv.end());
cout < < vv.size();
system( "pause ");
return 0;
}
[解决办法]
char arr[len][len];
int visited[len]={0};
int pos[len]={1};int t=0;
int * find(char arr[][])
{
for(int x=0;x <len;x++)
{
int k=0;
for(int y=0;y <len;y++)
if(arr[y][x]==0&&!visited[y])
{
k++;
if(k==len)
{
pos[t++]=y;visited[y]=1;
}
}
}
return pos;
}
[解决办法]
如果不是排序的,那么只能一个一个判断了.
如果是排序过的(或许可以在插入的时候采用一种策略),那么就判断最后一个和第一个是否为0,不就是
全0的情况么?