Java扑克牌速算24的方法
已知一副扑克牌有54张,去除大王和小王,剩余52张。在其中随机抽取4张牌,利用加减乘除进行计算得到24.从A到10,他们的值分别为1到10.从J到K,他们对应的值是减去10以后的值。编写程序生成一副扑克牌,随机抽取4张,进行计算是否能得到24.如果可以,列出可能的计算表达式,可能有多种计算形式。
主要思想就是先生成除去大小王的52张扑克牌,然后从中随机抽取四张。接着用排列组合的方式找到能计算得到24的表达式。
packagePoker; importjava.util.Random; importjava.util.Stack; publicclassPoker{ staticintcount=0; staticintcount_2=0; publicstaticStackstack=newStack (); publicstaticStack stack_temp=newStack (); publicstaticStack stack_collection=newStack (); publicstaticvoidmain(String[]args){ System.out.println("PokerWorld"); //生成扑克牌 intpoker[][]=newint[4][13]; for(inti=0;i<4;i++){ for(intj=0;j<13;j++){ if(j+1<11){ poker[i][j]=j+1; } else{ poker[i][j]=j-9; } } } Randomr=newRandom(); intrandomPoker[]=newint[4]; for(inti=0;i<4;i++){ randomPoker[i]=poker[r.nextInt(3)][r.nextInt(12)]; stack_temp.add(randomPoker[i]); } System.out.print("抽到的扑克牌:"); for(intelement:randomPoker){ System.out.printf("%d",element); } System.out.print("\n"); order(randomPoker,4,0); //System.out.printf("%d\n",count_2); if(count!=0){ System.out.printf("共有%d种计算方法",count); } else{ System.out.print("无法计算得到24"); } } privatestaticvoidorder(int[]poker,inttarg,intcur){ //TODOAuto-generatedmethodstub if(cur==targ){ Stringstr=stack.toString(); if(!stack_collection.contains(str)){ stack_collection.add(str); count_2+=1; intnew_poker[]=newint[4]; for(inti=0;i<4;i++){ new_poker[i]=stack.pop(); } for(inti=3;i>=0;i--){ stack.push(new_poker[i]); } do24(new_poker); } return; } for(inti=0;i 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。