[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

批处理列出1000以内回文数

[新手练功区的新手跟帖不多,可能是因为题目太难了。各位等等新手两天再回答好了。]
我国古代有一种回文诗,倒念顺念都有意思,例如“人过大佛寺”,倒读起来便是“寺佛大过人”。还有经典的对联“客上天然居,居然天上客”。此种例子举不胜举。

从左向右读与从右向左读完全一样的数字就是回文数,如11、121、767等等。

经典!以前做过一个找出10000以内的回文数的题目,都一样。就是不知131 464 15751
这样的是不是回文数。
心绪平和,眼藏静谧。

TOP

对阿,就是这样的。

10000太多了,少点给人在感觉上压力不会太大。

TOP

"上海自来水来自海上"

正念倒念都一样,算不算回文?

TOP

看来新手们是不想解答此题,本人先来抛个“砖”吧,期待“玉”的出现:
  1. @echo off
  2. for /l %%i in (11,1,999) do set "str=%%i"&call :lp %%i
  3. pause>nul
  4. :lp
  5. set "a=%a%%str:~,1%"&set "b=%b%%str:~-1%"
  6. set "str=%str:~1,-1%"
  7. if defined str goto lp
  8. if %a% equ %b% echo %1
  9. set "a="&set "b="
复制代码
***共同提高***

TOP

楼上效率必然不高
其实可以观察回文数的特点:左右两边对称
巧妙的方法可以直接通过for即可,数秒内就可找出10000以内所有的回文数

TOP

原帖由 youxi01 于 2008-9-18 12:36 发表
楼上效率必然不高
其实可以观察回文数的特点:左右两边对称
巧妙的方法可以直接通过for即可,数秒内就可找出10000以内所有的回文数

楼上说是的即是,本人也是用这种多层循环的方法解的,之所以没有贴出来,是想引其他人来把这块玉献出来。。。

[ 本帖最后由 batman 于 2008-9-18 12:48 编辑 ]
***共同提高***

TOP

当然楼上的思路是投机取巧的办法,不是真正意义上的检测 回文数,纯粹是列出

TOP

测试代码:
  1. @echo off
  2. for /l %%i in (1 1 9) do (
  3. echo %%i%%i
  4. set/a n+=1
  5. for /l %%j in (0 1 9) do (
  6.   echo %%i%%j%%i
  7.   echo %%i%%j%%j%%i
  8.   set/a n+=2
  9.   )
  10. )
  11. echo 10000以内总共有回文数%n%个
  12. pause>nul
复制代码
不过考虑全了没有,我就不知道了
1

评分人数

    • wxcute: 巧,就是没按顺序,不过应该不会少,你是管 ...PB + 2

TOP

楼上的还有些不全:四位数的不见了
还有一些4004,404之类

我的代码稍微加入了统计回文数个数...

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (11,1,999) do (
  4. set a=%%i
  5. if "!a:~0,1!"=="!a:~-1!" echo %%i
  6. )
  7. pause
复制代码


献丑了。。。
1

评分人数

    • wxcute: 针对1000以内的就很简洁了。PB + 6

TOP

0,1,2,3,4,5,6,7,8,9不算吗?

原帖由 youxi01 于 2008-9-18 12:53 发表
测试代码:@echo off
echo 0set n=1for /l %%i in (1 1 9) do (
echo %%i
echo %%i%%i
set/a n+=2
for /l %%j in (0 1 9) do (
  echo %%i%%j%%i
  echo %%i%%j%%j%%i
  set/a n+=2
  )
)
echo 10000以内总共有回文数%n%个
paus ...

[ 本帖最后由 z_berry 于 2008-9-23 13:21 编辑 ]

TOP

这是我的不严谨之处。
我自己也不大清楚。
如果单个数也是的话,就要从 0 开始循环了。

TOP

请问9楼的你代码中的set /a n+=1和set /a n+=2这两个在这段代码中各表示什么意思啊

TOP

回 14 楼

set /a n+=1 等同于 set /a n=n+1
set /a n+=2 等同于 set /a n=n+2

TOP

返回列表