#include #include #include using namespace std; bool larger(string& s1,string& s2){ int l1,l2,i; l1 = s1.length(); l2 = s2.length(); if(l1>l2) return true; if(l1s2[i]) return true; if(s1[i]=0) s = s.substr(i); else s = ""; return; } void calc_cell(char** matrix,string** table,int i,int j){ char tmp[2]; //cout << "error" << " " << i << " " << j << endl; if(isdigit(matrix[i][j])){ if(larger(table[i+1][j],table[i][j+1])){ table[i][j] = string(1,matrix[i][j]) + table[i+1][j]; //cout << table[i][j] << endl; } else{ table[i][j] = string(1,matrix[i][j]) + table[i][j+1]; //cout << table[i][j] << endl; } } else{ table[i][j] = ""; } } string calc_max(char** matrix,string** table,int w,int h){ int i,j,k; string max,tmp; max = ""; i = h-1; j = w-1; for(k=0;k<=w;k++){ table[h][k] = ""; } for(k=0;k<=h;k++){ table[k][w] = ""; } do{ calc_cell(matrix,table,i,j); tmp = table[i][j]; normalize(tmp); if(larger(tmp,max)) max = tmp; for(k=j-1;k>=0;k--){ calc_cell(matrix,table,i,k); tmp = table[i][k]; normalize(tmp); if(larger(tmp,max)) max = tmp; } for(k=i-1;k>=0;k--){ calc_cell(matrix,table,k,j); tmp = table[k][j]; normalize(tmp); if(larger(tmp,max)) max = tmp; } if(i>=1) i--; if(j>=1) j--; }while(i>0 || j>0); return max; } int main(void){ int w,h; char** matrix; string** table; string max; int i,j; cin >> w >> h; while(h!=0 && w!=0){ matrix = new char*[h]; table = new string*[h+1]; for(i=0;i> matrix[i][j]; } } max = calc_max(matrix,table,w,h); for(i=0;i> w >> h; } }