All pastes #2054811 Raw Edit

Anonymous

public text v1 · immutable
#2054811 ·published 2011-05-07 09:08 UTC
rendered paste body
#include <iostream>
#include <string>
#include <vector>
#include <set>

using namespace std;

int w;
int len = 0;
vector<string> words;
set<char> letters;

bool solve(){

    cin >> w;
    for(int i = 0; i < w; i++){
        string s;
        cin >> s;
        len = max(len, (int)s.size());
        words.push_back(s);    
    }    
    int count = 0;
    
    for(int wl = len; wl > 0; wl--){
    while(count < wl){
        int len2 = 0;
        count ++;
        for(int i = 0; i < words.size(); i++){
            for(int j = 0; j < words[i].size(); j++){
                    letters.insert(words[i][j]);
            }  
        }  
        set<char>::iterator it;
        it = letters.begin();
        char c = *it;
        
        //cout << c << endl;
        
        bool removed = false;
        for(vector<string>::iterator it = words.begin(); it < words.end(); it++){
            string s = *it;
            if(s.size() != wl){
                continue;    
            }
            for(int j = 0; j < s.size(); j++){
                if(s[j] == c){
                    words.erase(it); 
                    removed = true;
                    it --;   
                }else{
                    len2 = max(len2, (int)s.size());    
                }
            }
        }
        if(!removed)
            break;
        letters.clear();
        cout << wl << " " << count << endl;
        for(int i = 0; i < words.size(); i++){
            cout << words[i] << " ";    
        }
        cout << endl;
        if(len2 < count){
            //return true;    
        }
    }
    
    }
    if(words.size() > 0){
        return true;    
    }
    return false;
}

int main(){
    
    int n;
    cin >> n;
    for(int i = 0; i < n; i++){
        len = 0;
        words.erase(words.begin(), words.end());
        bool answer = solve();
        if(answer){
            cout << "Yes" << endl;    
        }else{
            cout << "No" << endl;    
        }
    }
    
    system("pause");
    
    return 0;    
}