【Java程序】全境征才求最大SR概率
B站【蓝火小寒冰】
QQ【694986107】
欢迎探讨编程问题
package Tkfm;
import java.util.ArrayList;
public class Qjzc {
public static void main(String[] args) {
/*
* 【标签表】
* 火 水 风 光 暗
* 攻 守 治 妨 辅
* 人 魔 亚
* 小 中
* 贫 美 巨
* 输 保 防 回 干 支
* 削 爆 生 越 群
*
* 数据来源:https://purindaisuki.github.io/tkfmtools/enlist/
* 已内置查询功能(模式1)请自行更新数据
*
* 永远不选士兵
* 选到精英必出
*/
/*
* 0:找labels给出的标签SR最高概率的组合。
* 1:找人信息。
*/
int mod = 0;
String[] labels = {"火", "辅", "暗", "群", "美"};//刷出来的标签(mod为 1 时无效)
String key = "法斯";//查询关键字(mod为 0 时无效)
ArrayList<String> name = new ArrayList<>();
ArrayList<Integer> level = new ArrayList<>();
ArrayList<String[]> label = new ArrayList<>();
name.add("魔管家 艾可");
level.add(2);
label.add(new String[]{"暗", "辅", "魔", "中", "美", "支"});
name.add("圣骑士长 雷欧娜");
level.add(2);
label.add(new String[]{"水", "守", "人", "中", "美", "保", "防", "生"});
name.add("神官长 菲欧拉");
level.add(2);
label.add(new String[]{"光", "治", "人", "中", "美", "回"});
name.add("女忍者 凛月");
level.add(2);
label.add(new String[]{"风", "攻", "人", "中", "美", "输", "保", "群"});
name.add("剑圣 神无雪");
level.add(2);
label.add(new String[]{"火", "攻", "亚", "中", "美", "削", "越"});
name.add("妖狐 静");
level.add(2);
label.add(new String[]{"水", "妨", "亚", "小", "美", "干", "削"});
name.add("大将军 朱诺安");
level.add(2);
label.add(new String[]{"暗", "攻", "人", "中", "巨", "输", "支"});
name.add("天才女军师 布兰妮");
level.add(2);
label.add(new String[]{"光", "妨", "人", "美", "支", "削", "爆", "群"});
name.add("史莱姆女王 娜芙菈菈");
level.add(2);
label.add(new String[]{"风", "守", "魔", "中", "巨", "保", "防", "回", "生"});
name.add("双蛇军团护士长 艾琳");
level.add(1);
label.add(new String[]{"光", "治", "人", "中", "巨", "回"});
name.add("猫妖 娜娜");
level.add(1);
label.add(new String[]{"风", "攻", "魔", "小", "贫", "输"});
name.add("龙女 伊维丝");
level.add(1);
label.add(new String[]{"火", "攻", "亚", "小", "贫", "输", "越", "群"});
name.add("犬人族 朵拉");
level.add(1);
label.add(new String[]{"风", "守", "亚", "中", "美", "保", "防", "生"});
name.add("魅魔 撒芭丝");
level.add(1);
label.add(new String[]{"暗", "妨", "魔", "中", "美", "干"});
name.add("美人鱼 玛莲");
level.add(1);
label.add(new String[]{"水", "治", "亚", "中", "美", "回"});
name.add("流浪魔法师");
level.add(1);
label.add(new String[]{"火", "攻", "人", "小", "巨", "输", "越"});
name.add("黑暗精灵 索拉卡");
level.add(1);
label.add(new String[]{"暗", "妨", "亚", "中", "美", "削"});
name.add("法斯帝国士兵 赛莲");
level.add(0);
label.add(new String[]{"暗", "守", "人", "中", "美", "保", "防"});
name.add("法斯帝国法师 佩托拉");
level.add(0);
label.add(new String[]{"光", "攻", "人", "中", "贫", "输", "群"});
name.add("魔族战士 芙蕾");
level.add(0);
label.add(new String[]{"光", "守", "魔", "中", "美", "保", "防"});
name.add("魔族法师 玛努艾拉");
level.add(0);
label.add(new String[]{"暗", "攻", "魔", "中", "美", "输"});
name.add("烈日国武士 桔梗");
level.add(0);
label.add(new String[]{"火", "妨", "人", "中", "美", "削"});
name.add("烈日国巫女 枫");
level.add(0);
label.add(new String[]{"风", "治", "人", "中", "美", "回"});
name.add("精灵射手 奥菈");
level.add(0);
label.add(new String[]{"风", "攻", "亚", "中", "美", "输"});
name.add("矮人战士 可儿");
level.add(0);
label.add(new String[]{"水", "攻", "亚", "小", "贫", "输", "爆"});
name.add("双蛇军团士兵 夏琳");
level.add(0);
label.add(new String[]{"火", "守", "人", "中", "美", "保", "防", "群"});
name.add("圣光骑士 玛蒂娜");
level.add(0);
label.add(new String[]{"光", "守", "人", "中", "美", "保", "防", "生"});
name.add("主神教团僧兵 克蕾雅");
level.add(0);
label.add(new String[]{"光", "治", "人", "中", "美", "回"});
name.add("史莱姆娘 萝尔");
level.add(0);
label.add(new String[]{"水", "妨", "魔", "小", "美", "回", "削", "生"});
name.add("牛女 米诺");
level.add(0);
label.add(new String[]{"风", "守", "亚", "中", "巨", "保", "防", "干"});
name.add("蛇女 拉米亚");
level.add(0);
label.add(new String[]{"火", "妨", "魔", "中", "美", "干"});
name.add("鸟身女妖 哈比");
level.add(0);
label.add(new String[]{"风", "妨", "魔", "中", "美", "干", "削"});
name.add("法斯精锐近卫 安娜");
level.add(0);
label.add(new String[]{"火", "守", "人", "中", "美", "保", "防"});
name.add("法斯精锐骑士 布兰");
level.add(0);
label.add(new String[]{"风", "攻", "人", "中", "美", "输", "防"});
name.add("法斯高阶法师 诺诺可");
level.add(0);
label.add(new String[]{"水", "攻", "人", "中", "美", "输", "爆"});
name.add("试做机三号");
level.add(0);
label.add(new String[]{"光", "攻", "小", "美", "输", "生"});
if (mod == 1) {
int size = name.size();
for (int i = 0; i < size; i++) {
if (name.get(i).contains(key))
System.out.println(level.get(i) + " [" + name.get(i) + "] " + " [" + String.join("、", label.get(i)) + "]");
}
System.out.println("\n查找完毕");
return;
}
String maxLabel = "";
float maxPer = 0;
int lbl = labels.length;
for (int i = 0; i < lbl; i++) {
float sr = 0;
float all = 0;
int size = level.size();
for (int j = 0; j < size; j++) {
String[] temp = label.get(j);
int length = temp.length;
boolean suit = false;
for (int k = 0; k < length; k++) {
suit = 0 == temp[k].compareTo(labels[i]);
if (suit) break;
}
if (suit) {
if (level.get(j) == 2) sr++;
all++;
}
}
if (all == 0) continue;
System.out.print("[" + labels[i] + "]:" + (sr / all) + "\n");
if (sr / all > maxPer) {
maxLabel = "[" + labels[i] + "]:";
maxPer = sr / all;
}
}
for (int i = 0; i < lbl; i++) {
for (int a = i + 1; a < lbl; a++) {
float sr = 0;
float all = 0;
int size = level.size();
for (int j = 0; j < size; j++) {
String[] temp = label.get(j);
int length = temp.length;
boolean suiti = false;
boolean suita = false;
for (int k = 0; k < length; k++) {
suiti |= 0 == temp[k].compareTo(labels[i]);
suita |= 0 == temp[k].compareTo(labels[a]);
if (suiti && suita) break;
}
if (suiti && suita) {
if (level.get(j) == 2) sr++;
all++;
}
}
if (all == 0) continue;
System.out.print("[" + labels[i] + "、" + labels[a] + "]:" + (sr / all) + "\n");
if (sr / all > maxPer) {
maxLabel = "[" + labels[i] + "、" + labels[a] + "]:";
maxPer = sr / all;
}
}
}
for (int i = 0; i < lbl; i++) {
for (int a = i + 1; a < lbl; a++) {
for (int b = a + 1; b < lbl; b++) {
float sr = 0;
float all = 0;
int size = level.size();
for (int j = 0; j < size; j++) {
String[] temp = label.get(j);
int length = temp.length;
boolean suiti = false;
boolean suita = false;
boolean suitb = false;
for (int k = 0; k < length; k++) {
suiti |= 0 == temp[k].compareTo(labels[i]);
suita |= 0 == temp[k].compareTo(labels[a]);
suitb |= 0 == temp[k].compareTo(labels[b]);
if (suiti && suita && suitb) break;
}
if (suiti && suita && suitb) {
if (level.get(j) == 2) sr++;
all++;
}
}
if (all == 0) continue;
System.out.print("[" + labels[i] + "、" + labels[a] + "、" + labels[b] + "]:" + (sr / all) + "\n");
if (sr / all > maxPer) {
maxLabel = "[" + labels[i] + "、" + labels[a] + "、" + labels[b] + "]:";
maxPer = sr / all;
}
}
}
}
System.out.println("\nSR概率最大的标签\n" + maxLabel + maxPer);
}
}