两种方法;
一、暴力破解
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[][] = new int[n][6];
int add[] = new int[n];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = sc.nextInt();
add[i] += a[i][j];
}
}
for (int i = 0; i < a.length; i++) {
if(add[i]%2==0) {
int t = add[i]/2;
if(a[i][0]+a[i][1]+a[i][2]==t||a[i][0]+a[i][1]+a[i][3]==t||
a[i][0]+a[i][1]+a[i][4]==t||a[i][0]+a[i][1]+a[i][5]==t||
a[i][0]+a[i][2]+a[i][3]==t||a[i][0]+a[i][2]+a[i][4]==t||
a[i][0]+a[i][2]+a[i][5]==t||a[i][0]+a[i][3]+a[i][4]==t||
a[i][0]+a[i][3]+a[i][5]==t||a[i][0]+a[i][4]+a[i][5]==t||
a[i][1]+a[i][2]+a[i][3]==t||a[i][1]+a[i][2]+a[i][4]==t||
a[i][1]+a[i][2]+a[i][5]==t||a[i][1]+a[i][3]+a[i][4]==t||
a[i][1]+a[i][3]+a[i][5]==t||a[i][1]+a[i][4]+a[i][5]==t||
a[i][2]+a[i][3]+a[i][4]==t||a[i][2]+a[i][3]+a[i][5]==t||
a[i][2]+a[i][4]+a[i][5]==t||a[i][3]+a[i][4]+a[i][5]==t)
System.out.println("YES");
else
System.out.println("NO");
}else {
System.out.println("NO");
}
}
}
}
/**************************************************************
Problem: 1341
User: 20161514325
Language: Java
Result: 正确
Time:278 ms
Memory:14052 kb
****************************************************************/
这种方法思路方法简单,但是写算法太浪费时间,可以换一种方法:
二、变换的全排列
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[][] = new int[n][6];
int aaa[][] = new int[n][6];
int add[] = new int[n];
int fif[] = new int[n];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = sc.nextInt();
add[i] += a[i][j];
}
}
for (int i = 0; i < a.length; i++) {
if(add[i]%2==0) {
f(a,aaa,i,3,0,add[i]/2,fif);
if(fif[i] == 1)
System.out.println("YES");
else
System.out.println("NO");
}else {
System.out.println("NO");
}
}
}
private static void f(int[][] a, int[][] aaa, int i, int j, int k, int add, int fif[]) {
if(j>=1) {
for (int l = 0; l < 6; l++) {
if(aaa[i][l]==0) {
aaa[i][l] = 1;
k += a[i][l];
f(a,aaa,i,j-1,k,add,fif);
aaa[i][l] = 0;
k -= a[i][l];
}
}
}else if(j==0){
if(k==add) {
fif[i] = 1;
}
}
}
}
/**************************************************************
Problem: 1341
User: 20161514325
Language: Java
Result: 正确
Time:255 ms
Memory:13692 kb
****************************************************************/