![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 05:15 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 出题,通过批处理输出九宫格(不限级别) |
| 可打印版本 2,080 / 20 |
| 第1楼 bat-zw | 发表于 2008-07-16 19:29 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
出题,通过批处理输出九宫格(不限级别) 输出如下:
要求:里面的数字是随机生成的,任意三个连着的数之和为15(横加、竖加、斜 加)。 ---------------------------------------------------------------------------------------------------------- 目前最完美的答案是小楼兄写出来的,代码确实精练,所以加6分: ---------------------------------------------------------------------------------------------------------- 但最值得一提的还是quya老土的解题思路,思路对才能正确解决问题,这也是我 所一直以来信奉的原则,所以我给老土加了满分20分。 ---------------------------------------------------------------------------------------------------------- 至此,我们通过重解此题有了最大的收获:一个人不仅要敢于挑战自己,更要勇 于挑战经典(老土的思路+小楼兄的代码已经超越了前版主namejm的经典方案)。 ---------------------------------------------------------------------------------------------------------- [ Last edited by zw19750516 on 2008-7-17 at 05:41 PM ] |
|
| 第2楼 quya | 发表于 2008-07-16 19:50 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
占个沙发,第一感觉先要处理的不是批处理,而是中间的那个数字只能是5。
不知我的猜测是否对,有了这个基础,才能下手编。 然后我们把左上第一格取个随机数a1,这个数一定是小于等于8的偶数,然后它的对角线上的数字a9一定是10-a1. 再在剩余的角上 a3 或者 a7 任取一个余下的偶数,最后一个角的偶数也定了。 奇数则分布在 a2, a4, a6, a8上, 4个偶数定了以后,奇数也就定了。 整个程序要用到2次随机数。 我们的思路也可以这样简化, 第一次产生一个不等于5,而且小于9的任意数,如果是偶数,则赋值给a1,否则赋值给a2. [ Last edited by quya on 2008-7-16 at 08:48 PM ] |
|
| 第3楼 26933062 | 发表于 2008-07-16 20:00 |
| 银牌会员 发帖 879 积分 2,268 | |
|
这个问题已经有过经典答案了,看谁还能有突破,也好。
看看各位的功力。。。 我是作不出,弃权。。。! |
|
| 第4楼 slore | 发表于 2008-07-16 20:55 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
貌似在这里有过讨论贴……
不限于3阶的。。。 |
|
| 第5楼 bat-zw | 发表于 2008-07-16 21:06 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by quya at 2008-7-16 19:50: 老土的思路是对的 |
|
| 第6楼 pusofalse | 发表于 2008-07-16 23:04 |
| 银牌会员 发帖 646 积分 1,604 | |
|
头都大了。。。。前辈不妨先贴出来,一起研究。
|
|
| 第7楼 HAT | 发表于 2008-07-16 23:12 |
| 版主 发帖 5,017 积分 9,023 | |
|
to 6楼 注意搜索,呵呵。
|
|
| 第8楼 pusofalse | 发表于 2008-07-16 23:18 |
| 银牌会员 发帖 646 积分 1,604 | |
|
强人。。。不过感觉变得有点体力活了。。。
|
|
| 第9楼 bat-zw | 发表于 2008-07-16 23:41 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by pusofalse at 2008-7-16 23:18: 不瞒兄弟说,我真的还没找到好的解决方法,苦思中。。。 |
|
| 第10楼 26933062 | 发表于 2008-07-16 23:49 |
| 银牌会员 发帖 879 积分 2,268 | |
|
如果只显示一种,按2楼的思路倒是好办,但如果要显示6种,确实有难度。。。
|
|
| 第11楼 quya | 发表于 2008-07-17 00:19 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
Originally posted by 26933062 at 2008-7-16 11:49 PM: 按我的办法只要重复调用完全可以随机显示所有可能。 这个题目不难的, 难就难在N宫的问题。 实际上这只是3宫,并非9宫, 真正9宫是81格。其实5宫就有点难度了。 以奇数宫为例: 中间的数字是固定的,等于 (n*n+1)/2 4个角上的数字也是固定的,但可以轮换,分别是 (n*n+n)/2 (n*n-n+2)/2 (n*n+n+4)/2 (n*n-n-2)/2 假如代入楼主的3宫题,那么4个角上的数字分别为 6,4,8,2 4条边的中间数字分别是1, (n+3)/2, n*n, (n*n+1)-(n+3)/2, 其他规律大家可以推算一下, 反正是很复杂的。 如果是偶数宫, 情况又会不一样。 [ Last edited by quya on 2008-7-17 at 01:04 AM ] |
|
| 第12楼 bat-zw | 发表于 2008-07-17 00:41 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
本人最初的方案:
[ Last edited by zw19750516 on 2008-7-17 at 05:42 PM ] |
|
| 第13楼 bat-zw | 发表于 2008-07-17 01:08 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
两点多了,要睡觉了,白天再来给代码减肥。
[ Last edited by zw19750516 on 2008-7-17 at 02:22 AM ] |
|
| 第14楼 26933062 | 发表于 2008-07-17 01:11 |
| 银牌会员 发帖 879 积分 2,268 | |
|
按2楼的思路
这种思路如果循环最多也就显示4种,而实际有6种。
[ Last edited by 26933062 on 2008-7-17 at 01:36 AM ] |
|
| 第15楼 pusofalse | 发表于 2008-07-17 05:12 |
| 银牌会员 发帖 646 积分 1,604 | |
|
根据26933062前辈的代码稍微添加了几句,8种布局能全部能显示出来。。。只有8种?或更多?
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |