Poj Solution 1574

http://poj.org/problem?id=1574

/* @author: */
import java.util.*;

public class Main {
private int x[];
private int y[];
private int z[];
private int a[]=new int[7],b[]=new int[7],c[]=new int[7],ax[]=new int[7],use[]=new int[7];
private int max;

public Main(int x[],int y[],int z[]){
this.x=x;
this.y=y;
this.z=z;
max=0;
for(int i = 0;i < 7;i ++) use[i] = 0;
}

public int  dfs(int p){
for(int i = 1;i <= 6;i ++) //ÿ���������6�ַŷ�
{
if(use[i]!=0) continue;//ǰ������ηŹ��λ�ò����ٷ�
for(int j = 1;j <= 3;j ++)//ÿ��������ֿɽ�����ת
{
if(j == 1) {a[p] = x[i];b[p] = y[i];c[p] = z[i];}
if(j == 2) {a[p]=y[i];b[p]=z[i];c[p] = x[i];}
if(j == 3) {a[p] = z[i];b[p] = x[i];c[p] = y[i];}
if(p != 1 && c[p] != b[p-1]) //���ܹؼ�,����߳����
continue;
if(p == 1)
ax[p] = a[p];
else
ax[p] = ax[p-1] + a[p];
use[i] = 1;
if(p< 6)
dfs(p + 1);
else
{
if(b[p] == c[1]) // ͬ��,������׺���
{
if(max < ax[p])
max = ax[p];//ȡ����ֵ
}
}
}
use[i] = 0;
}
return max;
}

public static void main(String[] args){
Scanner in = new Scanner(System.in);
char ch;
int x[]=new int[7],y[]=new int[7],z[]=new int[7];
while(in.hasNext()){

for(int i = 1;i <= 6;i ++) {
x[i]=in.nextInt();
y[i]=in.nextInt();
z[i]=in.nextInt();
}

Main m=new Main(x,y,z);
int max=m.dfs(1);
if(max == 0)
System.out.printf("nonen");
else
System.out.printf("%dn",max);
ch=in.next().charAt(0);
if(ch=='\$')
break;
}
}
}

This entry was posted in poj. Bookmark the permalink.