下载

2下载券

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 高二下期4月16日魔术数字游戏解题报告_冯斌

高二下期4月16日魔术数字游戏解题报告_冯斌.doc

高二下期4月16日魔术数字游戏解题报告_冯斌

faint
2018-09-07 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《高二下期4月16日魔术数字游戏解题报告_冯斌doc》,可适用于工程科技领域

魔术数字游戏解题报告源程序名magic(pas,c,cpp)可执行文件名magicexe输入文件名magicin输出文件名magicout【问题描述】填数字方格的游戏有很多种变化如下图所示的×方格中我们要选择从数字到来填满这十六个格子(Aij其中i=j=)。为了让游戏更有挑战性我们要求下列六项中的每一项所指定的四个格子其数字累加的和必须为:四个角落上的数字即AAAA=。每个角落上的×方格中的数字例如左上角:AAAA=。最中间的×方格中的数字即AAAA=。每条水平线上四个格子中的数字即AiAiAiAi=其中i=。每条垂直线上四个格子中的数字即AjAjAjAj=其中j=。两条对角线上四个格子中的数字例如左上角到右下角:AAAA=。右上角到左下角:AAAA=AAAAAAAAAAAAAAAA【输入】输入文件会指定把数字先固定在某一格内。输入的文件只有一行包含两个正数据I和J表示第行和第J列的格子放数字。剩下的十五个格子请按照前述六项条件用数字到来填满。【输出】把全部的正确解答用每行一组写到输出文件每行四个数相邻两数之间用一个空格隔开。两组答案之间要以一个空白行相间并且依序排好。排序的方式是先从第一行的数字开始比较每一行数字由最左边的数字开始比数字较小的解答必须先输出到文件中。【样例】magicinmagicout累死了。。。搜索剪枝但是在考场上写不出来。。。不知道其他更简洁的解法能不能在时限内出结果应该可能的因为我的思维一向比较混乱和冗繁对于本题做了大量的预处理而这保证了程序的效率不过考场上是不会这么写的我们可以知道题目总共有个限制=的情况我用f数组把这个部分描述出来了并且对于每一个点(i,j)记录它都属于哪几个块这是预处理的部分然后从第一个格子开始搜索就可以了对于每一个数字要放入的数字i有以下的约束。flagi:=true对于它所在的块中()如果加它变成个必须和=()当前和i<()如果当前有个数那么aai所得的数必须是true不满足以上任何一个条件剪掉。如果i满足那么递归下一个点就可以了然后就可以AC掉。。。本道题没法卡时因为要输出所有方案本来这个程序大概还要多出十几行因为实际上每个点的重要程度都是不一样的先搜索重要度大的点会更快不过由于本题要求输出顺序所以这个想法不能实现总之一句话搜索必须得剪枝typenode=recordx,y:longintendnode=recordva,num:longintp:arrayofnodeendvarflag:arrayofbooleana:array,,oflongintf:arrayofnodeans:array,oflonginttot,x,y,n,m,i,j,k,p,tmp:longintprocedurepredobeginfillchar(flag,sizeof(flag),true)flag:=falsefpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=tot:=ansx,y:=fori:=todobegininc(tot)forj:=todobeginftotpjx:=iftotpjy:=jendendfori:=todobegininc(tot)forj:=todobeginftotpjx:=jftotpjy:=iendendtot:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=fpx:=fpy:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=a,,:=tot:=fori:=todoifax,yi<>thenwithfax,yidobegininc(num)inc(va)endendprocedureprintbeginfori:=todobeginforj:=todowrite(ansi,j,'')writeln(ansi,)endwritelnendfunctioncan(x,y,w:longint):booleanvari,j:longintbeginfori:=todoifax,yi<>thenwithfax,yidobeginif(vaw>)or((num=)and(vaw<>))thenexit(false)ifnum=thenbeginj:=wvaif(j>)ornotflagjthenexit(false)endendexit(true)endprocedureope(x,y,w:longint)vari,j:longintbeginfori:=todoifax,yi<>thenwithfax,yidobegininc(num)inc(va,w)endendprocedureantiope(x,y,w:longint)vari,j:longintbeginfori:=todoifax,yi<>thenwithfax,yidobegindec(num)dec(va,w)endendproceduredfs(k,x,y:longint)vari,j,tmp:longintbeginifk=thenbeginprintexitendifansx,y<>thenbeginify=thendfs(k,x,)elsedfs(k,x,y)exitendfori:=todoifflagithenifcan(x,y,i)thenbeginansx,y:=iflagi:=falseope(x,y,i)ify=thendfs(k,x,)elsedfs(k,x,y)flagi:=trueansx,y:=antiope(x,y,i)endendbeginassign(input,'magicin')reset(input)assign(output,'magicout')rewrite(output)readln(x,y)predodfs(,,)close(input)close(output)end

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/9

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利