白準1759/パスワードの作成


質問する



に答える


説明:

  • パスワードは異なるLの小文字からなり、少なくとも1つの母音と少なくとも2つの補助音からなる
  • である.
  • のパスワードを構成するアルファベットは、パスワードの中で
  • をインクリメント順に並べなければならない.
  • のパスワードとして使用できる文字はC種類あります.
    この条件を満たすすべてのパスワードを要求する問題
  • コード#コード#

    import java.util.*;
    
    public class Main {
        public static boolean check(String password) {
            int ja = 0;
            int mo = 0;
            for (char x : password.toCharArray()) {
                if (x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u') {
                    mo += 1;
                } else {
                    ja += 1;
                }
            }
            return ja >= 2 && mo >= 1;
        }
        public static void go(int n, String[] alpha, String password, int i) {
            if (password.length() == n) {
                if (check(password)) {
                    System.out.println(password);
                }
                return;
            }
            if (i >= alpha.length) return;
            go(n, alpha, password+alpha[i], i+1);
            go(n, alpha, password, i+1);
        }
        public static void main(String args[]) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = sc.nextInt();
            
            String[] alpha = new String[m];
            for (int i=0; i<m; i++) {
                alpha[i] = sc.next();
            }
            
            Arrays.sort(alpha);
            
            go(n, alpha, "", 0);
        }
    }

    コードの説明


    • go(n, alpha, password, i)
    •n:作成するパスワードの長さ
    •alpha:使用可能なアルファベット
    •password:これまでに作成したパスワード
    •i:使用するアルファベット索引を確認する必要があります
    •正解が見つかった場合(ここでは質問の条件に合致しているかどうかを確認する必要があります)
    • n == password.length()
    •あり得ない
    • i >= alpha.size()
    注意:
    ソース:https://www.acmicpc.net/problem/1759