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();
publicstaticStackstack_temp=newStack();
publicstaticStackstack_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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。