<span style="font-size:18px;"> ,
package lkl1;
import java.util.Arrays;
import java.util.Scanner;
import java.util.Random;
public class SuohaGame {
// , 4--1
// ( ),
// 1--14 A--K,A 1 14 )
public SuohaGame(){
for(int i=1;i<=5;i++){
score[i]=1000;
xiazhu[i]=0;
}
}
//
public static void Init(){
cnt=1;
vis[0]=1;
win=0;
max=0;
}
//
private String[] DX={"","A","2","3","4","5","6","7","8","9","10","J","Q","K","A"};//
private String[] HS={""," "," "," "," "};//
private static int max; //
private static int win; //
private static int cnt; //
private static int[] vis= new int[500]; //
//
public int [] score =new int[7]; //
public int[] xiazhu=new int[7]; //
public int[] flag=new int[7]; //
public int [] card[] =new int[7][10]; //
//
// ,
public void sort(int[] a){
for(int i=1;i<=5;i++)
for(int j=i+1;j<=5;j++){
if(a[i]<a[j]){
int t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
// ,
public int bijiao(int x1,int x2,int num){
int[] t1 = new int [20]; // 1
int[] t2 = new int [10]; // 1
int[] t3= new int [20]; // 2
int[] t4 = new int[10]; // 2
for(int j=1;j<=5;j++){
t1[j]=Daxiao(card[x1][j],1);
t3[j]=Daxiao(card[x2][j],1);
t2[j]=Huase(card[x1][j]);
t4[j]=Huase(card[x2][j]);
}
if(num==9||num==5){//
int tt1=0,tt2=0;//
int j1=-1,j2=-1;
for(int i=1;i<=5;i++){
if(t1[i]>j1){
j1=t1[i];
tt1=t2[i];
}
if(t3[i]>j2){
j2=t3[i];
tt2=t4[i];
}
}
//Arrays.sort(t1);
sort(t1);
sort(t3);
if(t1[1]>t3[1]) //
return x1;
else if(t1[1]<t3[1])
return x2;
else{ // ,
if(tt1>tt2)
return x1;
else
return x2;
}
}
else{
for(int j=1;j<=5;j++){ // A
t1[j]=Daxiao(card[x1][j],0);
t3[j]=Daxiao(card[x2][j],0);
}
int tt1=0,tt2=0;//
int j1=-1,j2=-1;
for(int i=1;i<=5;i++){
if(t1[i]>j1){
j1=t1[i];
tt1=t2[i];
}
if(t3[i]>j2){
j2=t3[i];
tt2=t4[i];
}
}
sort(t1);
sort(t3);
///
if(num==8||num==7||num==4){
// 4 3
if(t1[3]>t2[3])
return x1;
else
return x2;
}
if(num==6){ //
// ,
int i=0;
for(i=1;i<=5;i++){
if(t1[i]>t3[i])
return x1;
else if(t1[i]<t3[i])
return x2;
}
if(i>5){
if(tt1>tt2)
return x1;
else
return x2;
}
}
// 2 1
//
int[] vis1=new int[22];
int[] vis2 =new int[22];
for(int i=0;i<=20;i++){
vis1[i]=0;
vis2[i]=0;
}
for(int i=1;i<=5;i++){
vis1[t1[i]]++;
vis2[t3[i]]++;
}
if(num==3){ // 2
// ,
int t11=0,t12=0,t13=0; //
int t21=0,t22=0,t23=0;
int cnt1=0,cnt2=0;
for(int d=14;d>=1;d--){
if(vis1[d]==2&&cnt1==0){
t11=d;
cnt1++;
}
if(vis1[d]==2&&cnt1==1){
t12=d;
cnt1++;
}
if(vis1[d]==1)
t13=d;
if(vis2[d]==2&&cnt2==0){
t21=d;
cnt2++;
}
if(vis2[d]==2&&cnt2==1){
t22=d;
cnt2++;
}
if(vis2[d]==1)
t23=d;
}
if(t11>t21)
return x1;
else if(t11<t21)
return x2;
else if(t12>t22)
return x1;
else if(t21<t22)
return x2;
else if(t13>t23)
return x1;
else if(t13<t23)
return x2;
else if(tt1>tt2)
return x1;
else
return x2;
}
if(num==2){ //
int xx1=0,xx2=0;
for(int i=1;i<=5;i++){
if(vis1[t1[i]]==2){
xx1=t1[i];
t1[i]=-1;
}
if(vis2[t3[i]]==2){
xx2=t3[i];
t3[i]=-1;
}
}
// System.out.println(xx1+" "+xx2);
if(xx1>xx2)
return x1;
else if(xx1<xx2)
return x2;
sort(t1);
sort(t3);
int i=0;
for(i=1;i<5;i++){
if(t1[i]>t3[i])
return x1;
else if(t1[i]<t3[i])
return x2;
}
if(i>=5){
if(tt1>tt2)
return x1;
else
return x2;
}
}
if(num==1){ //
//
int i=0;
for(i=1;i<=5;i++){
if(t1[i]>t3[i])
return x1;
else if(t1[i]<t3[i])
return x2;
}
if(i>5){
if(tt1>tt2)
return x1;
else
return x2;
}
}
}
return 0;
}
///
// ,
public int Getnum(int i){
/// ( ,
///, , )
boolean is_tonghua=false; //
boolean is_shunzi=false; //
int num_four=0; //
int num_three=0; //
int num_two=0; //
int[] t1 = new int [10]; //
int[] t2 = new int [10]; //
int j;
for(j=1;j<=5;j++){
t1[j]=Daxiao(card[i][j],1);
t2[j]=Huase(card[i][j]);
}
///
for( j=2;j<=5;j++){
if(t2[j]!=t2[j-1])
break;
}
if(j>5){
is_tonghua=true;
}
///
sort(t1);
for(j=2;j<=5;j++){
if(t1[j]!=t1[j-1]-1)
break;
}
if(j>5){
is_shunzi=true;
}
///
for(j=1;j<=5;){
if(j+3<=5&&t1[j]==t1[j+1]&&t1[j]==t1[j+2]&&t1[j]==t1[j+3]){
num_four++;
break;
}
if(j+2<=5&&t1[j]==t1[j+1]&&t1[j]==t1[j+2]){
num_three++;
j+=3;
}
else if(j+1<=5&&t1[j]==t1[j+1]){
num_two++;
j+=2;
}
j++;
}
///
if(is_tonghua&&is_shunzi) //
return 9;
if(num_four==1)
return 8;
if(num_three==1&&num_two==1) //
return 7;
if(is_tonghua) //
return 6;
if(is_shunzi) //
return 5;
if(num_three==1)//
return 4;
if(num_two==2) // ( )
return 3;
if(num_two==1) //
return 2;
return 1; //
}
//
public int cal(int t1,int t2){
if(t1>=10)
return t2*100+t1;
else
return t2*10+t1;
}
///
/// A , (14)
/// 。 fg
///fg 0 14( ); fg 1 1( )
public int Daxiao(int x,int fg){
if(x>100)
x=x%100;
else
x=x%10;
if(fg==0&&x==1)
return 14;
if(fg==1&&x==1)
return 1;
return x;
}
///
public int Huase(int x){
if(x>100)
return x/100;
else
return x/10;
}
// ,
public void print1(int num){
int[] xx1=new int[20]; //xx1
for(int i=0;i<20;i++){
xx1[i]=0;
}
for(int i=1;i<=5;i++){
int t=Daxiao(card[num][i],0);
xx1[t]++;
}
System.out.print(num+" : ");
for(int d=4;d>=1;d--){
for(int i=14;i>=1;i--){
if(xx1[i]==d){
for(int j=1;j<=5;j++){
if(Daxiao(card[num][j],0)==i){
System.out.print(HS[Huase(card[num][j])]+DX[i]+" ");
}
}
}
}
}
System.out.println("");
}
//
public void print(int num,int j){
if(j==2)
System.out.print(num+" : ");
else
System.out.print(num+" : ");
for(int i=j;i<=cnt;i++){
System.out.print(HS[Huase(card[num][i])]);
System.out.print(DX[Daxiao(card[num][i],0)]+" ");
}
System.out.println();
}
//
// ,
public int choice(int num){
Scanner sc = new Scanner(System.in);
if(score[num]-xiazhu[num]<max) {
// ,
System.out.println(num+" ! ");
score[num]-=xiazhu[num];
flag[num]=1;
return 0;
}
System.out.println(num+" : ");
int t;
t=sc.nextInt();
if(cnt!=5){
while(t>2||t<0){
System.out.println(" ! : ");
t=sc.nextInt();
}
}
else{
while(t>3||t<0){
System.out.println(" ! : ");
t=sc.nextInt();
}
}
if(t==2){
// ,
score[num]-=xiazhu[num];
flag[num]=1;
return 0;
}
if(t==1){ //
System.out.println(num+" ("+max+"---"+(score[num]-xiazhu[num])+"): ");
int fenshu;
fenshu=sc.nextInt();
while(fenshu<max||fenshu>(score[num]-xiazhu[num])){
System.out.println(" ! :");
fenshu=sc.nextInt();
}
if(max<fenshu){
max=fenshu;
}
xiazhu[num]+=fenshu;
return 0;
}
if(t==3){
xiazhu[num]=score[num];
System.out.println(num+" ! ");
System.out.println("1: 2: ");
int j=num+1;
while(j!=num){
if(j>5) j-=5;
if(flag[j]==0){
System.out.println(j+" : ");
int ch;
ch=sc.nextInt();
while(ch<1||ch>2){
System.out.println(" :");
ch=sc.nextInt();
}
if(ch==1){
xiazhu[j]=score[j];
}
else{
score[j]-=xiazhu[j];
flag[j]=1;
}
}
j++;
if(j>5)
j-=5;
}
return 1; // , 1
}
return 0;
}
// , , :
//
// ,
public void check(){
int cnt=0;
int temp=0;
for(int i=1;i<=5;i++){
if(flag[i]==0){
cnt++;
temp=i;
}
}
if(cnt==1){
win=temp;
}
else if(cnt==0){
win=-1;
}
}
//
public int judge(){
if(cnt<5){
/// ,
///
int tmp=0,j=0;
for(int i=1;i<=5;i++){
if(flag[i]==0&&tmp<Daxiao(card[i][cnt],0))
tmp=Daxiao(card[i][cnt],0);
j=i;
}
for(int i=1;i<=5;i++){
if(flag[i]==0&&Daxiao(card[i][cnt],0)==tmp){
if(Huase(card[i][cnt])>Huase(card[j][cnt])){
j=i;
}
}
}
return j;
}
else {
/// 5 , ,
/// 9--1 , , (3 + ), ,
/// , (2 ), 。 ,
/// 。 ,
/// : ,
/// ,
///
int[] num =new int[10]; // , -1
for(int i=1;i<=5;i++)
num[i]=-1;
for(int i=1;i<=5;i++){
if(flag[i]==0){
num[i]=Getnum(i);
}
}
/*
//
for(int i=1;i<=5;i++){
System.out.print(num[i]+" ");
}
System.out.println();*/
int tmp1=0,tmp2=-1; ///tmp1 ,tmp2
for(int i=1;i<=5;i++){
if(num[i]>tmp2){
tmp2=num[i];
tmp1=i;
}
else if(num[i]==tmp2){
tmp1=bijiao(tmp1,i,tmp2);
}
}
return tmp1;
}
}
//
//
public void Fapai(int num,int i){
if(flag[num]==1) // ,
return;
Random rand =new Random();
int t1=0,t2=0,t=0;
while(vis[t]==1){
// 1--13
t1=rand.nextInt(12)+1;
// 1--4
t2=rand.nextInt(3)+1;
t=cal(t1,t2);
if(vis[t]==0){
vis[t]=1;
card[num][i]=t;
return ;
}
}
}
//
public void play(){
while(cnt<=5){
//cnt
if(cnt==1){
// , 2 , ,
for(int j=1;j<=5;j++){
for(int i1=1;i1<=2;i1++){
Fapai(j,i1);
}
}
cnt++;
//
for(int i1=1;i1<=5;i1++){
print(i1,2);
}
}
else{
// System.out.println(" "+cnt+" ");
// ,
//
for(int i1=1;i1<=5;i1++){
if(flag[i1]==1)
continue;
System.out.println("1: 2: ");
if(cnt==5){
System.out.println("3: ");
}
if(choice(i1)==1)
break;
}
check();
int j=judge(); //
if(cnt==5){
win=j;
}
if(win!=0) { // , ,
if(win==-1){
System.out.println(" , ");
return;
}
System.out.println(" : "+win+" ");
for(int i=1;i<=5;i++){
if(i==win)
continue;
score[win]+=xiazhu[i];
}
System.out.println(" :"+(score[win]-1000));
for(int i=1;i<=5;i++){
if(flag[i]==0&&i!=win){
score[i]-=xiazhu[i];
}
}
for(int i=1;i<=5;i++){
if(flag[i]==0){
print1(i);
// print(i,1); //
// System.out.println("");//
}
}
//
for(int i=1;i<=5;i++){
System.out.println(i+" : "+score[i]);
}
return;
}
// j ,
Fapai(j,cnt+1);
int i=j+1;
System.out.println(i);
while(i!=j){
if(i>5)
i-=5;
Fapai(i,cnt+1);
i++;
if(i>5)
i-=5;
}
cnt++; //
for(int i1=1;i1<=5;i1++){ ///
if(flag[i1]==0){
print(i1,2);
}
}
}
//max=0;
}
}
public static void main(String[] args){
SuohaGame sg= new SuohaGame();
Init();
sg.play();
}
}
</span>