来源:蜘蛛抓取(WebSpider)
时间:2017-05-30 01:42
标签:
梦见打扑克牌赢了
斗牛纸牌游戏怎么玩热新闻
澎湃新闻APP下载
斗牛纸牌游戏怎么玩:热门推荐Soleil noir|LOFTER(乐乎) - 记录生活,发现同好
LOFTER for ipad —— 记录生活,发现同好
下载移动端
关注最新消息
  被喜欢
  被喜欢
{list posts as post}
{if post.type==1 || post.type == 5}
{if !!post.title}${post.title|escape}{/if}
{if !!post.digest}${post.digest}{/if}
{if post.type==2}
{if post.type == 3}
{if !!post.image}
{if post.type == 4}
{if !!post.image}
{if !!photo.labels && photo.labels.length>0}
{var wrapwidth = photo.ow < 500?photo.ow:500}
{list photo.labels as labs}
{var lbtxtwidth = Math.floor(wrapwidth*(labs.ort==1?labs.x:(100-labs.x))/100)-62}
{if lbtxtwidth>12}
{if !!labs.icon}
{list photos as photo}
{if photo_index==0}{break}{/if}
品牌${make||'-'}
型号${model||'-'}
焦距${focalLength||'-'}
光圈${apertureValue||'-'}
快门速度${exposureTime||'-'}
ISO${isoSpeedRatings||'-'}
曝光补偿${exposureBiasValue||'-'}
镜头${lens||'-'}
{if data.msgRank == 1}{/if}
{if data.askSetting == 1}{/if}
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post_index < 3}
{if post.type == 1 || post.type == 5}
{if !!post.title}${post.title|escape}{/if}
{if !!post.digest}${post.digest}{/if}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
{if post.type == 6}
{if drlist.length>0}
更多相似达人:
{list drlist as dr}{if drlist.length === 3 && dr_index === 0}、{/if}{if drlist.length === 3 && dr_index === 1}、{/if}{if drlist.length === 2 && dr_index === 0}、{/if}{/list}
暂无相似达人,
{if defined('posts')&&posts.length>0}
{list posts as post}
{if post.type == 2}
{if post.type == 3}
{if post.type == 4}
{if post.type == 6}
this.p={ currentPage:1,pageNewMode:true,isgooglead3:false,ishotrecompost:false,visitorId:0, first:'',tag:'Soleil noir',recommType:'new',recommenderRole:0,offset:19,type:0,isUserEditor:0,};计算机等级
当前位置:>>>>>>>>
扑克牌游戏“算24”的程序解法
一种有趣的扑克牌游戏C算24 众多的扑克牌游戏中,算24是一种不错的锻炼反应力和计算能力的智力游戏,游戏规则大致是这样:从去掉大小王的一副扑克中任意抽取四张,读取上面的数字(其中A算1,2-10就是2-10,J算11,Q算12,K算13),然后进行加减乘除四则运算,早算出24的结果者为赢家,要求是四个数字必须且只能参与计算一次。 举例来说:得到Q,J,2,A四张牌,对应了12,11,2,1四个数字,那么12+11+2-1可以得到24. 算24的难题 之所以拿24当计算目标是因为这是30以内因数最多的数,从小往大有1,2,3,4,6,8,12等七个,这使得计算出结果相对容易,整幅牌中能计算出24的组合比例较高。游戏时,如果看见其中出现一个因数,然后能把剩下的数凑成对应的一个就可以了。比如有8,9,3,2四个,看见8以后,把 9,3,2凑成3就行。因为24的因数高达整体的7/13,以上方法法也是游戏中常用的比较快速有效的得分方法。 但对于一些较难的组合则需要四个数统合考虑,这时就比较费神了,需要用到分数法,如著名的被微软采纳进面试题之一的3,8,3,8和网络上有名的3,7,3,7,下面列出了一些常见的算24难题,如果你有兴趣可以做一做(答案在文后) 8,3,8,3 3,7,3,7 12,12,12,10 10,10,4,4 1,4,5,6 2,2,2,9 3,4,7,8 11,11,1,5 1,2,7,7 7,7,4,4 1,4,5,6 1,3,4,6 5,5,5,1 用程序计算24 我们可以把计算24的算式归纳成A_B_C_D的形式,ABCD是四个操作数,_下划线代表+-*/四种操作符,再加上括号的影响,总的计算次数是有限的,如果用程序都试一遍,自然就得出能计算出24的算式。具体来说ABCD进行全排列有24种情况,+-*/进行四选三有64种情况,加上括号对算式的影响有11种具体形式,需要进行全部的计算次数是24*64*11种。 接下来程序就比较好写了,把这些情况列出来即可,具体请见代码: Caculator类代码 package com.heyang.caculate24; import java.util.LinkedHashS import java.util.S /** * 算24的计算器,传入包含四个数的数组,输出可能的计算组合 * 说明: * 作者:何杨() * 创建时间: 下午12:56:21 * 修改时间: 下午12:56:21 */ public class Caculator{ // 传入的四个数的数组 private Integer[] // 存储四个数所有排列方式的集合 private Set&Integer[]& // 加减乘除四种操作符 private static final char Plus=’+'; private static final char Minus=’-'; private static final char Multi=’*'; private static final char Divide=’/'; // 包含加减乘除四种操作符的数组 private static final Character[] ArithOperators={Plus,Minus,Multi,Divide}; // 存储四种算术操作符选出三种进行组合的集合,总计有64个元素 private static Set&Character[]& operatorS /** * 静态构造子 * 用于初始化四种算术操作符的集合 * 不管此类形成多少实例,operatorSet总是一样的 */ static{ operatorSet=new LinkedHashSet&Character[]&(); // 四选三,允许重复,用循环即可 int i,j,k; for(i=0;i&4;i++){ for(j=0;j&4;j++){ for(k=0;k&4;k++){ operatorSet.add(new Character[]{ArithOperators[i],ArithOperators[j],ArithOperators[k]}); } } } } /** * 传入一个四位数组,将所有的排列方式放入链表 * @param arr */ public Caculator(Integer[] arr){ // 保存 this.arr= // 得到四个数字可能的排列 set=new LinkedHashSet&Integer[]&(); permutation(arr,0,arr.length); // 打印出可能的算式 printPossibleCacu(); } /** * 进行全排列,将所有的排列放入链表 * * 说明: * @param arr * @param start * @param end * 创建时间: 下午01:04:44 * 修改时间: 下午01:04:44 */ private void permutation(Integer[] arr,int start,int end){ if(start&end+1){ permutation(arr,start+1,end); for(int i=start+1;i&i++){ I temp=arr[start]; arr[start]=arr[i]; arr[i]= permutation(arr,start+1,end); temp=arr[i]; arr[i]=arr[start]; arr[start]= } } else{ set.add(new Integer[]{arr[0],arr[1],arr[2],arr[3]}); } }
/** * 打印可以得到24的算式 * * 说明: * 创建时间: 下午01:19:56 * 修改时间: 下午01:19:56 */ private void printPossibleCacu(){ // 可以得到24的算式集合 Set&String& formulaSet=new LinkedHashSet&String&(); // 遍历算式 for(Character[] arrOperator:operatorSet){ // 遍历四个数 for(Integer[] arrNumber:set){ BaseFormula fomula= if(isPlusOrMinus(arrOperator[0]) && isPlusOrMinus(arrOperator[1]) && isPlusOrMinus(arrOperator[2])){ // 连加减的情况,公式1 fomula=new Formula1(arrNumber,arrOperator); if(fomula.isEaqual24()){ formulaSet.add(fomula.getFormulaString()); } } else if(isMultiOrDivide(arrOperator[0]) && isMultiOrDivide(arrOperator[1]) && isMultiOrDivide(arrOperator[2])){ // 连乘除的情况,公式1 fomula=new Formula1(arrNumber,arrOperator); if(fomula.isEaqual24()){ formulaSet.add(fomula.getFormulaString()); } } else if(isMultiOrDivide(arrOperator[0]) && isPlusOrMinus(arrOperator[1]) && isMultiOrDivide(arrOperator[2])){ // 中间是加减,两边是乘除的情况。 // 公式2 fomula=new Formula2(arrNumber,arrOperator); if(fomula.isEaqual24()){ formulaSet.add(fomula.getFormulaString()); } // 公式3 1
免责声明:因考试政策、内容不断变化与调整,本站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!本站对如上内容的真实性、完整性不作任何保证或承诺!转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。同时,本站无意侵犯他人权利,如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!邮箱:
相关文章&&& 上传我的文档
 下载
 收藏
网上的朋友大家好,希望我的服务你们能够满意。免责声明: 本站资料多数来自网络,如有侵权,敬请告知,将立即删除!本人对由道客引起的侵权问题不承担法律责任,转发下载资料请于24小时内删除,谢谢!
 下载此文档
正在努力加载中...
毕业论文--21点扑克牌游戏
下载积分:800
内容提示:毕业论文--21点扑克牌游戏
文档格式:DOC|
浏览次数:128|
上传日期: 09:25:26|
文档星级:
全文阅读已结束,如果下载本文需要使用
 800 积分
下载此文档
该用户还上传了这些文档
毕业论文--21点扑克牌游戏
官方公共微信