2020_5_6
刚刚在学Linux的Shell的时候用shell的写法重新写了一遍,发现这份java的写法里面有几个挺严重的问题-----题目有很多的限制并没有写上去,虽然也可以运行的出结果,但这是因为题目数量和条件的限制所导致的,如果题目稍微多一些的话话,那一定会出现错误答案
import java.util.Arrays;
public class Main {
public static Boolean isTrue(char[] aw) {
Boolean rs = true;// 第一题永远成立
for (int i = 2; i <= aw.length; i++) {
if (rs == false) {
return false;//如果那一道题不成立则退出判断
}
switch (i) {
case 2:
rs = demo_2(aw);
break;
case 3:
rs = demo_3(aw);
break;
case 4:
rs = demo_4(aw[0], aw[1], aw[3], aw[4], aw[5], aw[6], aw[8], aw[9]);
break;
case 5:
rs = demo_5(aw[3], aw[4], aw[6], aw[7], aw[8]);
break;
case 6:
rs = demo_6(aw);
break;
case 7:
rs = demo_7(aw);
break;
case 8:
rs = demo_8(aw);
break;
case 9:
rs = demo_9(aw);
break;
case 10:
rs = demo_10(aw);
break;
}
}
return true;
}
// 第二题判断
public static Boolean demo_2(char[] aw) {
switch (aw[1]) {
case 'a':
if (aw[4] == 'c') {
return true;
}
break;
case 'b':
if (aw[4] == 'd') {
return true;
}
break;
case 'c':
if (aw[4] == 'a') {
return true;
}
break;
case 'd':
if (aw[4] == 'b') {
return true;
}
break;
}
return false;
}
// 第三题判断
public static Boolean demo_3(char[] aw) {
switch (aw[2]) {
case 'a':
if (aw[2] != aw[1] && aw[2] != aw[3] && aw[2] != aw[5]) {
return true;
}
break;
case 'b':
if (aw[5] != aw[1] && aw[5] != aw[2] && aw[5] != aw[3]) {
return true;
}
break;
case 'c':
if (aw[1] != aw[2] && aw[1] != aw[3] && aw[1] != aw[5]) {
return true;
}
break;
case 'd':
if (aw[3] != aw[1] && aw[3] != aw[2] && aw[3] != aw[5]) {
return true;
}
break;
}
return false;
}
// 第四题的判断
public static Boolean demo_4(char aw_1, char aw_2, char aw_4, char aw_5, char aw_6, char aw_7, char aw_9,
char aw_10) {
switch (aw_4) {
case 'a':
if (aw_1 == aw_5) {
return true;
}
break;
case 'b':
if (aw_2 == aw_7) {
return true;
}
break;
case 'c':
if (aw_1 == aw_9) {
return true;
}
break;
case 'd':
if (aw_6 == aw_10) {
return true;
}
break;
}
return false;
}
// 第五题判断
public static Boolean demo_5(char aw_4, char aw_5, char aw_7, char aw_8, char aw_9) {
switch (aw_5) {
case 'a':
if (aw_5 == aw_8) {
return true;
}
break;
case 'b':
if (aw_5 == aw_4) {
return true;
}
break;
case 'c':
if (aw_5 == aw_9) {
return true;
}
break;
case 'd':
if (aw_5 == aw_7) {
return true;
}
break;
}
return false;
}
// 第六题判断
public static Boolean demo_6(char[] aw) {
switch (aw[5]) {
case 'a':
if (aw[7] == aw[1] && aw[7] == aw[3]) {
return true;
}
break;
case 'b':
if (aw[7] == aw[0] && aw[7] == aw[5]) {
return true;
}
break;
case 'c':
if (aw[7] == aw[2] && aw[7] == aw[9]) {
return true;
}
break;
case 'd':
if (aw[7] == aw[4] && aw[7] == aw[8]) {
return true;
}
break;
}
return false;
}
// 第七题判断
public static Boolean demo_7(char[] aw) {
int[] num = count(aw);
switch (aw[6]) {
case 'a':
if (num[2] < num[0] && num[2] < num[1] && num[2] < num[3]) {
return true;
}
break;
case 'b':
if (num[1] < num[0] && num[1] < num[2] && num[1] < num[3]) {
return true;
}
break;
case 'c':
if (num[0] < num[1] && num[0] < num[2] && num[0] < num[3]) {
return true;
}
break;
case 'd':
if (num[3] < num[0] && num[3] < num[1] && num[3] < num[2]) {
return true;
}
break;
}
return false;
}
// 第八题判断
public static Boolean demo_8(char[] aw) {
int[] num = count(aw);
Arrays.sort(num);
switch (aw[7]) {
case 'a':
if (aw[6] - aw[0] != 1 && aw[0] - aw[6] != -1 &&aw[0] != aw[6] ) {
return true;
}
break;
case 'b':
if (aw[4] - aw[0] != 1 && aw[0] - aw[4] != -1&&aw[0] != aw[4]) {
return true;
}
break;
case 'c':
if (aw[1] - aw[0] != 1 && aw[0] - aw[1] != -1&&aw[0] != aw[1]) {
return true;
}
break;
case 'd':
if (aw[9] - aw[0] != 1 && aw[0] - aw[9] != -1 && aw[0] != aw[9]) {
return true;
}
break;
}
return false;
}
// 第九题判断
public static Boolean demo_9(char[] aw) {
int aw_1_6 = aw[0]==aw[5]?1:0;
int aw_x_5 = 66100;//这个值必定会有,这里的赋值是为了不报错才给他
switch (aw[8]) {
case 'a':
aw_x_5 = aw[5]==aw[4]?1:0;
break;
case 'b':
aw_x_5 = aw[9]==aw[4]?1:0;
break;
case 'c':
aw_x_5 = aw[1]==aw[4]?1:0;
break;
case 'd':
aw_x_5 = aw[8]==aw[4]?1:0;
break;
}
if(aw_1_6+aw_x_5==1) {
return true;
}
return false;
}
// 第十题判断
public static Boolean demo_10(char[] aw) {
int[] num = count(aw);
Arrays.sort(num);
switch (aw[9]) {
case 'a':
if (num[3] - num[1] == 3) {
return true;
}
break;
case 'b':
if (num[3] - num[1] == 2) {
return true;
}
break;
case 'c':
if (num[3] - num[1] == 4) {
return true;
}
break;
case 'd':
if (num[3] - num[1] == 1) {
return true;
}
break;
}
return false;
}
// 统计每一项选择的个数
public static int[] count(char[] aw) {
int[] num = { 0, 0, 0, 0 };
for (int i = 0; i < aw.length; i++) {
switch (aw[i]) {
case 'a':
num[0]++;
break;
case 'b':
num[1]++;
break;
case 'c':
num[2]++;
break;
case 'd':
num[3]++;
break;
}
}
return num;
}
public static void main(String[] args) {
char[] aw = { 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a' };
for (int a = 0; a < 4; a++) {
aw[0] = (char) (aw[0] + a);
for (int b = 0; b < 4; b++) {
aw[1] = (char) (aw[1] + b);
for (int c = 0; c < 4; c++) {
aw[2] = (char) (aw[2] + c);
for (int d = 0; d < 4; d++) {
aw[3] = (char) (aw[3] + d);
for (int e = 0; e < 4; e++) {
aw[4] = (char) (aw[4] + e);
for (int f = 0; f < 4; f++) {
aw[5] = (char) (aw[5] + f);
for (int g = 0; g < 4; g++) {
aw[6] = (char) (aw[6] + g);
for (int h = 0; h < 4; h++) {
aw[7] = (char) (aw[7] + h);
for (int i = 0; i < 4; i++) {
aw[8] = (char) (aw[8] + i);
for (int j = 0; j < 4; j++) {
aw[9] = (char) (aw[9] + j);
// 判断答案是否正确
if (isTrue(aw)) {
System.out.println(Arrays.toString(aw));
}
aw[9] = 'a';
}
aw[8] = 'a';
}
aw[7] = 'a';
}
aw[6] = 'a';
}
aw[5] = 'a';
}
aw[4] = 'a';
}
aw[3] = 'a';
}
aw[2] = 'a';
}
aw[1] = 'a';
}
aw[0] = 'a';
}
}
}
运行结果