public class MaJiang2 { private boolean jiang=false;//是否找到將 public MaJiang2(){}
//花色,判斷這個花色是否被減完了(如果沒有減完自然沒有和) private int huase(int[] hua) { if (hua.length==7) { //判斷字,自比較特殊,沒有順 for (int i=0;i { if (hua[i]==3||hua[i]==4) { hua[i]=0; huase(hua); } //如果字有兩個,肯定是將 if (hua[i]==2&&!jiang) { hua[i]=0; jiang=true; huase(hua); } } } else { for (int i=0;i { //如果沒有將,先把將減出去 if (!jiang&&hua[i]>=2) { hua[i]=hua[i]-2; jiang=true; int fanhui=huase(hua); //如果遞歸回來依舊沒有減完,則把將加回去 if (fanhui!=0) { hua[i]=hua[i]+2; jiang=false; } } if (hua[i]!=0&&i<7&&hua[i+1]!=0&&hua[i+2]!=0) { hua[i]--; hua[i+1]--; hua[i+2]--; huase(hua); int fanhui=huase(hua); //如果遞歸回來依舊沒有減完,減去的加回去 if (fanhui!=0) { hua[i]++; hua[i+1]++; hua[i+2]++; } } if (hua[i]==3||hua[i]==4) { int temp=hua[i]; hua[i]=0; huase(hua); int fanhui=huase(hua); //如果遞歸回來依舊沒有減完,減去的加回去 if (fanhui!=0) { hua[i]++; hua[i]=temp; } } } } int re=0; //最后判斷減沒減完 for (int i=0;i { re=re+hua[i]; } return re; }
public void Hu(int[] aWan,int[] aTiao,int[] aTong,int[] aZi) { //先從字開始,如果某一花色計(jì)算完之后依舊不為0,則肯定不和。如果所有的花色全部減完了,就和了,呵呵:-〉 int jieguo=huase(aZi); if (jieguo!=0) { System.out.println("沒和"); } else if ((jieguo=huase(aWan))!=0) { System.out.println("沒和"); } else if ((jieguo=huase(aTiao))!=0) { System.out.println("沒和"); } else if ((jieguo=huase(aTong))!=0) { System.out.println("沒和"); } else { System.out.println("和了,真不容易,一腦門子漢"); } } public static void main(String[] args) { MaJiang2 mj=new MaJiang2(); int[] w={3,1,1,2,1,1,1,1,3}; int[] ti={0,0,0,0,0,0,0,0,0}; int[] to={0,0,0,0,0,0,0,0,0}; int[] z={0,0,0,0,0,0,0};
mj.Hu(w,ti,to,z); } }
|