String Equivalence
問題
D – String Equivalence
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2022/2/5 解法わからず。
解法
- 文字列で使えるのは
a
から今まで使われた文字の次の文字。 - 1文字の場合は
a
しか使えない。 - 2文字の場合は
a
からb
まで使えるので、aa
とab
。 - 3文字の場合は
a
からc
まで使えるので、aaa
、aab
、aba
、abb
、abc
となる。 dfs
で文字列を生成する。
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 60; // const int INF = 1001001001; int N; void dfs(string res, char mx) { int n = res.size(); if(N == n) { cout << res << endl; } else { for(char c = 'a'; c <= mx; c++) { char v = mx; if(c == mx) { v = char(mx + 1); } dfs(res + c, v); } } } int main() { cin >> N; dfs("", 'a'); return 0; }