33,027
社区成员




#include <iostream>
using namespace std;
void printIndex( int **index, int n, int *pos ) {
for( int i = 0; i < n; i++ ) {
cout << index[i][ pos[i] ] << " ";
}
cout << endl;
}
void printAll( int **index, int n ) {
int *pos = new int[ n ];
int i = 0;
for( i = 0; i < n; i++ ) {
pos[i] = -1;
}
for( i = 0; i >= 0 && i < n; ) {
pos[i]++;
if( index[i][ pos[i] ] < 0 ) {
pos[i] = -1;
i--;
} else if( i != 0 ) {
while( index[i][pos[i]] >= 0 && index[i-1][pos[i-1]] >= index[i][pos[i]] ) {
pos[i]++;
}
if( index[i][pos[i]] < 0 ) {
pos[i]--;
} else if( i == n - 1 ) {
printIndex( index, n, pos );
} else {
i++;
}
} else {
i++;
}
}
delete []pos;
}
int main( int argc, char** argv ) {
int **index = new int*[3];
index[0] = new int[2];
index[0][0]=0;
index[0][1]=-1;
index[1]= new int[3];
index[1][0] = 1;
index[1][1] = 3;
index[1][2] = -1;
index[2] = new int[3];
index[2][0]= 4;
index[2][1]= 5;
index[2][2]= -1;
printAll( index, 3 );
}