解いた問題

4/29/2011

SRM317Div2

250
class ReversingBrackets {
public:
  string removeBrackets(string s) {
    string r, t;
    for(int i=0; i<s.size(); ++i){
      if(s[i] == '['){
        r += t;
        t = "";
      }
      else if(s[i] == ']'){
    reverse(t.begin(), t.end());
        r += t;
        t = "";
      }
      else t += s[i];
    }
    if(t.size())r += t;
    return r;
  }
};
500
set<int> s;

void rec(int dep, vector<string> &v, string t)
{
  if(t.size() && t[0] == '0')return ;
  if(dep == 0){
    v.push_back(t);
    return ;
  }
  for(char c='0'; c<='9'; ++c){
    rec(dep-1, v, t + c);
  }
  return ;
}

class PalindromicNumbers {
public:
  int countPalNums(int lower, int upper) {
    for(int i=1; i<=9; ++i){
      s.insert(i);
    }
    for(int i=0; i<5; ++i){
      vector<string> v;
      rec(i, v, "");
      for(int j=0; j<v.size(); ++j){
        string t = v[j];
        reverse(t.begin(), t.end());
        for(char c='0'; c<='9'; ++c){
          string u = v[j];
          u += c;
          u += t;
          s.insert( atoi( u.c_str() ) );
        }
        t = v[j] + t;
        s.insert( atoi( t.c_str() ) );
      }
    }
    int r = 0;
    FOR(i, s){
      cout << *i << endl;
      if(lower <= *i && *i <= upper){
        cout << *i << endl;
        ++r;
      }
    }
    return r;
  }
}; 
1000
読んでない。

0 件のコメント :

コメントを投稿