void traverseGraph(const vector<vector<char> > &graph, int i, int j, vector<vector<bool> > &traversed) {
    //cout<<"Traversing "<<i<<" "<<j<<endl;
    traversed[i][j] = true;
    if((getCharAt(graph,i-1,j) == 'O') && (!traversed[i-1][j])) {
        traverseGraph(graph, i-1, j, traversed);
    }
    if((getCharAt(graph,i+1,j) == 'O') && (!traversed[i+1][j])) {
        traverseGraph(graph, i+1, j, traversed);
    }
    if((getCharAt(graph,i,j-1) == 'O') && (!traversed[i][j-1])) {
        traverseGraph(graph, i, j-1, traversed);
    }
    if((getCharAt(graph,i,j+1) == 'O') && (!traversed[i][j+1])) {
        traverseGraph(graph, i, j+1, traversed);
    }
}
Esempio n. 2
0
 void fixStyles(int32_t start, int32_t limit, int32_t newLen) {
     UChar newStyle = NO_STYLE;
     if (start != limit && styles.charAt(start) != NO_STYLE) {
         newStyle = styles.charAt(start);
     } else if (start > 0 && getCharAt(start-1) != NO_STYLE_MARK) {
         newStyle = styles.charAt(start-1);
     } else if (limit < styles.length()) {
         newStyle = styles.charAt(limit);
     }
     // dumb implementation for now.
     UnicodeString s;
     for (int i = 0; i < newLen; ++i) {
         // this doesn't really handle an embedded NO_STYLE_MARK
         // in the middle of a long run of characters right -- but
         // that case shouldn't happen anyway
         if (getCharAt(start+i) == NO_STYLE_MARK) {
             s.append(NO_STYLE);
         } else {
             s.append(newStyle);
         }
     }
     styles.replaceBetween(start, limit, s);
 }