61 lines
2.5 KiB
Java
61 lines
2.5 KiB
Java
// derived from C
|
|
final class LastLetterFirstLetter {
|
|
static int maxPathLength = 0;
|
|
static int maxPathLengthCount = 0;
|
|
static final StringBuffer maxPathExample = new StringBuffer(500);
|
|
|
|
static final String[] names = {"audino", "bagon", "baltoy", "banette",
|
|
"bidoof", "braviary", "bronzor", "carracosta", "charmeleon",
|
|
"cresselia", "croagunk", "darmanitan", "deino", "emboar",
|
|
"emolga", "exeggcute", "gabite", "girafarig", "gulpin",
|
|
"haxorus", "heatmor", "heatran", "ivysaur", "jellicent",
|
|
"jumpluff", "kangaskhan", "kricketune", "landorus", "ledyba",
|
|
"loudred", "lumineon", "lunatone", "machamp", "magnezone",
|
|
"mamoswine", "nosepass", "petilil", "pidgeotto", "pikachu",
|
|
"pinsir", "poliwrath", "poochyena", "porygon2", "porygonz",
|
|
"registeel", "relicanth", "remoraid", "rufflet", "sableye",
|
|
"scolipede", "scrafty", "seaking", "sealeo", "silcoon",
|
|
"simisear", "snivy", "snorlax", "spoink", "starly", "tirtouga",
|
|
"trapinch", "treecko", "tyrogue", "vigoroth", "vulpix",
|
|
"wailord", "wartortle", "whismur", "wingull", "yamask"};
|
|
|
|
static void recursive(String[] part, int offset) {
|
|
if (offset > maxPathLength) {
|
|
maxPathLength = offset;
|
|
maxPathLengthCount = 1;
|
|
} else if (offset == maxPathLength) {
|
|
maxPathLengthCount++;
|
|
maxPathExample.setLength(0);
|
|
for (int i = 0; i < offset; i++) {
|
|
maxPathExample.append((i % 5 == 0 ? "\n " : " "));
|
|
maxPathExample.append(part[i]);
|
|
}
|
|
}
|
|
final char lastChar = part[offset - 1].charAt(part[offset - 1].length()-1);
|
|
for (int i = offset; i < part.length; i++) {
|
|
if (part[i].charAt(0) == lastChar) {
|
|
String tmp = names[offset];
|
|
names[offset] = names[i];
|
|
names[i] = tmp;
|
|
recursive(names, offset+1);
|
|
names[i] = names[offset];
|
|
names[offset] = tmp;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
for (int i = 0; i < names.length; i++) {
|
|
String tmp = names[0];
|
|
names[0] = names[i];
|
|
names[i] = tmp;
|
|
recursive(names, 1);
|
|
names[i] = names[0];
|
|
names[0] = tmp;
|
|
}
|
|
System.out.println("maximum path length : " + maxPathLength);
|
|
System.out.println("paths of that length : " + maxPathLengthCount);
|
|
System.out.println("example path of that length:" + maxPathExample);
|
|
}
|
|
}
|