分享
分销 收藏 举报 申诉 / 34

类型拱猪计分(外三题).pptx

  • 上传人:仙人****88
  • 文档编号:14738718
  • 上传时间:2026-11-11
  • 格式:PPTX
  • 页数:34
  • 大小:118.81KB
  • 下载积分:10 金币
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    拱猪 计分 外三题
    资源描述:
    ,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2012-6-6,#,网络教室编程练习选讲,光电学院,XXX,dsdgzy,2011/4/13,拱猪计分,Background,:,规则一堆。,1.,我们分别以,S,、,H,、,D,及,C,来代表黑桃,红心,方块及梅花,并以数字,1,至,13,来代表,A,、,2,、,、,Q,、,K,等牌点,例如:,H1,为红心,A,,,S13,为黑桃,K,。(没用的),2.,牌局结束时,由各玩家持有的有关计分的牌,(,计分牌,),仅有,S12(,猪,),,所有红心牌,,D11(,羊,),及,C10(,加倍,),等,16,张牌。其它牌均弃置不计。若未持有这,16,张牌之任一张则以得零分计算。,拱猪计分,3.,若持有,C10,的玩家只有该张牌而没有任何其它牌则得,+50,分,若除了,C10,还有其它计分牌,则将其它计分牌所得分数加倍计算。,4.,若红心牌不在同一家,则,H1,至,H13,等,13,张牌均以负分计,其数值为,-50,,,-2,,,-3,,,-4,,,-5,,,-6,,,-7,,,-8,,,-9,,,-10,,,-20,,,-30,,,-40,。而且,S12,与,D11,分别以,-100,及,+100,分计算。,5.,若红心牌,H1,至,H13,均在同一家,有下列情形:,所有红心牌以,+200,分计算。,若,S12,、,D11,皆在吃下所有红心牌之一家,则此玩家得,+500,分。,而,C10,还是以前面所述原则计算之。,计算得分,拱猪计分,Input,:,每个输入有多组测试数据,每组数据有四行,每一行第一个数为该玩家所持有计分牌总数,而后列出其所持的所有计分牌,牌数与各计分牌均以一个以上的空格分开。相邻两组测试数据之间不会有空白行,读到四家持牌数都为,0,表示文件结束。,Output,:,每一行输出一组测试数据对应的结果,依次输出各家所得分数,共四个整数,(,含正负号,,0,除外,),,相邻两个整数之间以一个空格分开,符号和数字间不可以有空格。每组输出间不需要有空白行。,拱猪计分,Sample1:,S12 H3 H5 H13,D11 H8 H9,C10 H1 H2 H4 H6 H7,H10 H11 H12,-148 +83,-138,-60,Sample2:,H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13,S12 C10,D11,+200-200+100 0,拱猪计分,1,、输入。,2,、计算每个人的得分。,3,、如果牌数都是,0,,则结束;否则重复,2,、,3,、,4,歩。,4,、输出每个人的得分。,其中,第,1,、,2,、,4,步需要细化。,计算得分要注意选择计算顺序,尽可能简化计算步骤。,头痛指数:,难度指数:,输入,按行读入,4,个人的牌的张数,并用数组记录他们的牌面。,牌数与各计分牌均以一个以上的空格分开,,可以用,scanf(“%c”,来读入,这样就可以跳过所有空格。注意,在“和,%,两符号之间有一空格。,用一个数组,b,来保存牌面。,b0,代表是否有,C10,,,b14,代表是否有,S12,,,b15,代表是否有,D11,,,b1,到,b13,分别记录是否有,H1,到,H13,。,b,数组在读入之前全赋值成,0,,有哪张牌就赋值成,1。,输入,for(i=0;i4;i+),scanf(“%d”,/ni,代表第,i+1,个人有几张牌,numi=0;/numi,代表第,i+1,个人得了多少分,for(j=0;j=15;j+)bj=0;/b,数组赋初值,0,for(j=0;jni;j+)/ni,张牌,scanf(“%c”,/,读入花色,scanf(“%d”,/,读入数字,if(c=C,else if(c=S,else if(c=D,else if(c=H)bk=1;,numi=work();/,计算得分,计算得分,确定合适的计算顺序。根据题目所给的,5,条,计算规则,:,1,、判断第,3,条的“只有一张,C10,”的情况。如果是,直接返回,50,分;否则往下计算。,2,、计算玩家红心牌的得分。,如果得分等于,-194,分,证明此玩家有所有的红心牌,就把分数变成,200,分。如果还有,S12,和,D11,,就把分数变成,500,分。,如果得分不等于,-194,分,就再加上“,S12,与,D11,分别以,-100,及,+100,分计算”的分数。,3,、有,C10,的得分乘以,2,。,计算得分,int work()/,返回玩家的分数,int k,t=0;,if(ni=1 /,只有一张牌,是,C10,for(k=1;k=13;k+)t+=initk*bk;/,计算玩家红心牌得分,if(t=-194)t=200;/,如果玩家有所有红心牌,if(b14,else t=t+(-100)*b14+100*b15;,if(b0)t=t*2;/,如果有,C10,,得分乘,2,return t;,输出,for(i=0;i0)printf(+%d,x);,else printf(%d,x);,if(i!=3)printf();,printf(n);,小结,题目太长了,读了一遍头都晕了。再读几遍,头痛不止啊。,字符的输入等问题,需要仔细检查。,合适的计算步骤能节省一大段代码。,因为期中考试,我请高中机房的同学,wyl,代写了这道题,给出的代码也是他写的。此人水平不错,成天没事干,大家有问题也可以问他,,QQ,:,915910623,洗牌,Background,:,假设我们有,2n,张牌,它们开始以,1,2,.,n,n+1,.,2n,编号。一次洗牌将牌原来的次序变为,n+1,1,n+2,2,.,2n,n,,也就是将原来的前,n,张牌放到位置,2,4,.,2n,,并且将余下的,n,张牌按照他们原来的次序放到奇数位置,1,3,.,2n-1,。已经证明对于任何一个自然数,n,,这,2n,张牌经过一定次数的洗牌就回到原来的次序。,Input,:,牌张数的一半,n,,即初始情况下一共有,2n,张牌,Output,:,将牌洗回原来的次序所需要的洗牌次数,洗牌,1,、输入。,2,、赋初值。一个数组,a,记录每一次换牌后牌的顺序,数组下标是,1,到,n,*,2,,赋初值为,1,到,n*2,,代表初始时刻牌的顺序。,3,、变换。,4,、比较。若未与初始状态相同,则重复,3,、,4,条。如果相同,转,5,。,5,、输出变换次数。,其中,第,3,步、第,4,步需要细化。,难度:,变换,用一个数组,b,作中间存储,根据题目的变换规则,有:,bi*2-1=an+i;bi*2=ai;(i=1n),每次用,b,数组更新,a,。,计数器加一。,变换,do,for(i=1;i=n;i+),bi*2-1=an+i;bi*2=ai;/,变换,for(i=1;i=2*n;i+)ai=bi;/,用,b,的值更新,a,ans+;/,计数器加一,while(check(a,n);/,比较函数,比较,一个比较函数,如果这时的数组,a,不符合要求则返回,1,;否则返回,0,。,一个循环从,1,到,2*n,,判断,ai,是否等于,i,。若不等则立刻返回,1,。,比较,int check(int*a,int n)/,判断数组,a,是否与初态相同,int i;,for(i=1;i=2*n;i+),if(ai!=i)return 1;/,有不等的情况立刻返回,1,return 0;,小结,这个题看着好像有点麻烦,其实也就是一个模拟题。做的方法与题意完全相同。,注意一下变换法则,循环,+,判断。,此题好像有特殊输入,0。,直接输出,0,即可。,好像没有什么好说的了。,合并果子,Background,:,每一次合并,可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。所有的果子经过,n-1,次合并之后,只剩下一堆。在合并果子时总共消耗的体力等于每次合并所耗体力之和。,Input,:,输入包括两行,。第一行是一个整数,n(1,n=10000),,表示果子的种类数。第二行包含,n,个整数,用空格分隔,第,i,个整数,ai(1,ai=0;i-),for(j=0;jaj+1),x=aj;,aj=aj+1;,aj+1=x;,相加,1,、每次将,x=a1=a0+a1;,然后把,x,插入到数组合适的位置中,移动数组,使整理后数组依然是从小到大排列。,2,、移动方法:,在后面的数中寻找合适位置,i,,使得,aixai/,x,应该插入到什么地方,for(j=2;ji;j+),aj-2=aj;/,将,x,插入点之前的都向前移动,2,个,aj-2=x;/,插入,x,for(j=j-1;jn;j+),/x,插入点之后的都向前移动,1,个位置,aj=aj+1;,n-;,/,还剩几堆果子,小结,1,、这一道题是一道经典题(,NOIP2004,高中组第,2,题)。,2,、此题使用贪心法,每次选取两个最小的数字进行合并,最后得到的总体力最小。,3,、本来这个题的数据规模很大,(1,n=10000),,但是网络教室的输入数据太弱了。要不然光排序就要超时了。所以不用快速排序加双数组维护的麻烦做法了。,安全的密码,Background,:,安全的密码,最好由大小写字母、数字或符号组成。包含越多种类的字符,其安全性就越高。,判断规则:,如果密码长度小于,6,位,则不安全,如果组成密码的字符只有一类,则不安全,如果组成密码的字符有两类,则为中度安全,如果组成密码的字符有三类或以上,则为安全,安全的密码,Input,:,输入的第一行是一个整数,N,,表明后面有多少组密码。随后的,N,行输入包括,N,个密码,每个密码的长度均小于,20,个字符。,Output,:,针对每一个密码判断并输出它是否安全。对于不安全的密码输出,Not Safe,,对于中度安全的密码输出,Medium Safe,,对于安全的密码输出,Safe“,难度指数:,安全的密码,1,、读入数据的组数,2,、每读入,1,个密码,(,字符串,),,就计算它的安全程度,输出,计算出字符串有几类字符:,如果有大写字符,类数加,1,;,如果有小写字符,类数加,1,;,如果有数字字符,类数加,1,;,如果有符号,类数加,1,字符串有几位,主程序,int main(),scanf(%d,gets(str);/,跳过第一行行末的回车,for(i=1;i=n;i+),gets(str);/,读入每个密码,work();/,计算密码的安全度,return 0;,计算安全度,void work(),int t;,len=strlen(str);,t=ascNum();/,计算有几类字符,if(len6|t=1)/,长度小于,6,或者只有,1,类字符,printf(Not Safen);,else if(t=2),printf(Medium Safen);,else,printf(Safen);,计算几类字符,int ascNum(),int t=0;,if(sAlph()t+;/,如果有小写字符,if(bAlph()t+;/,如果有大写字符,if(dig()t+;/,如果有数字,if(oth()t+;/,如果有符号,return t;,判断是否有字符,判断是否有小写字符:,int sAlph(),for(j=0;jlen;j+),if(a=strj&strj=z),return 1;,return 0;,判断是否有符号:,int oth(),for(j=0;jlen;j+),if(!(a=strj&strj=z)&,!(A=strj&strj=Z)&,!(0=strj&strj=9),return 1;,return 0;,小结,这个题非常简单,大家记住做法即可。,提供的做法也是高中同学,wyl,写的。,Thank you!,由于作者水平有限,准备时间仓促等原因,不足之处在所难免,诚恳地希望读者批评指正。,2011,版权所有 转载请注明 请勿私自修改。,
    展开阅读全文

    开通VIP折扣优惠下载文档

    提示  咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。

    咨信网小贴示:
    1、浏览或下载可查看了解,请点击【咨信网告知】。
    2、下载文件中如有侵权或不适当内容,将立即纠正。
    3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
    4、开具发票登录电脑端申请,请点击【索取发票】。

    咨信网客服组:【微信客服】

    自信AI创作助手
    关于本文
    本文标题:拱猪计分(外三题).pptx
    链接地址:https://www.zixin.com.cn/doc/14738718.html

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork