BJ 1759パスワードの作成
14960 ワード
https://www.acmicpc.net/problem/1759
この問題は、条件を満たすすべてのパスワードを出力することです.
A~Z順にプリプリントしなければならず、文字が重複していないため、組み合わせを再帰関数として実現し、長さが適切であることを確保することができる.
印刷すると簡単に解決できます.
この問題は、条件を満たすすべてのパスワードを出力することです.
A~Z順にプリプリントしなければならず、文字が重複していないため、組み合わせを再帰関数として実現し、長さが適切であることを確保することができる.
印刷すると簡単に解決できます.
package day0221;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class MakePassword {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
static StringTokenizer st;
static int L, C;
static char[] input, number;
static void combi(int count, int start, int numofA, int numofB) throws IOException {
if (count == L) {
if (numofA >= 1 && numofB >= 2) {
for(char c : number) {
bw.append(c);
}
bw.append("\n");
return;
} else {
return;
}
}
for (int i = start; i < C; i++) {
number[count] = input[i];
if (input[i] == 'a' || input[i] == 'e' || input[i] == 'i' || input[i] == 'o' || input[i] == 'u') {
combi(count + 1, i + 1, numofA + 1, numofB);
} else {
combi(count + 1, i + 1, numofA, numofB + 1);
}
}
}
public static void main(String[] args) throws IOException {
st = new StringTokenizer(br.readLine(), " ");
L = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
input = new char[C];
number = new char[L];
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < C; i++) {
input[i] = st.nextToken().charAt(0);
}
Arrays.sort(input);
combi(0, 0, 0, 0);
bw.flush();
}
}
Reference
この問題について(BJ 1759パスワードの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@mraz0210/BJ1759-암호-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol