#include <iostream>
#include <iomanip>
using namespace std;
void DeleteNullRow(int** a, int& rows, int cols)
{
int newRow = 0;
for(int j = 0; j < rows; ++j)
{
bool has0 = false;
for(int i = 0; i < cols; ++i)
if (a[j][i] == 0) { has0 = true; break; }
if (!has0)
{
for(int i = 0; i < cols; ++i)
a[newRow][i] = a[j][i];
newRow++;
}
}
for(int i = newRow; i < rows; ++i) delete[] a[i];
rows = newRow;
}
int main(int argc, const char * argv[])
{
int rows = 10;
int **a = new int*[rows];
for(int i = 0; i < rows; ++i)
{
a[i] = new int[20];
for(int j = 0; j < 20; ++j) a[i][j] = rand()%20;
}
for(int i = 0; i < rows; ++i)
{
for(int j = 0; j < 20; ++j) cout << setw(2) << a[i][j] << " ";
cout << endl;
}
cout << endl;
cout << endl;
DeleteNullRow(a, rows, 20);
for(int i = 0; i < rows; ++i)
{
for(int j = 0; j < 20; ++j) cout << setw(2) << a[i][j] << " ";
cout << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIERlbGV0ZU51bGxSb3coaW50KiogYSwgaW50JiByb3dzLCBpbnQgY29scykKewogICAgaW50IG5ld1JvdyA9IDA7CiAgICBmb3IoaW50IGogPSAwOyBqIDwgcm93czsgKytqKQogICAgewogICAgICAgIGJvb2wgaGFzMCA9IGZhbHNlOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb2xzOyArK2kpCiAgICAgICAgICAgIGlmIChhW2pdW2ldID09IDApIHsgaGFzMCA9IHRydWU7IGJyZWFrOyB9CiAgICAgICAgaWYgKCFoYXMwKQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGNvbHM7ICsraSkKICAgICAgICAgICAgICAgIGFbbmV3Um93XVtpXSA9IGFbal1baV07CiAgICAgICAgICAgIG5ld1JvdysrOwogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaSA9IG5ld1JvdzsgaSA8IHJvd3M7ICsraSkgZGVsZXRlW10gYVtpXTsKICAgIHJvd3MgPSBuZXdSb3c7Cn0KCgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKewogICAgaW50IHJvd3MgPSAxMDsKICAgIGludCAqKmEgPSBuZXcgaW50Kltyb3dzXTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCByb3dzOyArK2kpCiAgICB7CiAgICAgICAgYVtpXSA9IG5ldyBpbnRbMjBdOwogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCAyMDsgKytqKSBhW2ldW2pdID0gcmFuZCgpJTIwOwogICAgfQoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCByb3dzOyArK2kpCiAgICB7CiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IDIwOyArK2opIGNvdXQgPDwgc2V0dygyKSA8PCBhW2ldW2pdIDw8ICIgIjsKICAgICAgICBjb3V0IDw8IGVuZGw7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CiAgICBjb3V0IDw8IGVuZGw7CgogICAgRGVsZXRlTnVsbFJvdyhhLCByb3dzLCAyMCk7CgogICAgZm9yKGludCBpID0gMDsgaSA8IHJvd3M7ICsraSkKICAgIHsKICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgMjA7ICsraikgY291dCA8PCBzZXR3KDIpIDw8IGFbaV1bal0gPDwgIiAiOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KCn0K