2 qq 31663901 qq_31663901 于 2016.09.24 20:52 提问

如何构造一个范围内所有的回文数?

列如构造出5-100000所有的回文数。不是要顺序查找的方法!!是自己一个一个的构造来提高效率!

3个回答

caozhy
caozhy   Ds   Rxr 2016.09.24 21:07
已采纳
 for (int i = 1; i < 10; i++)
{
int r1 = i;
if (r1 > 5) printf("%d", r1);
int r2 = i * 10 + i;
printf("%d", r2);
}
for (int i = 10; i < 100; i++)
{
int r = i * 100 + rev(i);
printf("%d", r);
}
for (int i = 100; i < 1000; i++)
{
int r = i * 100 + rev(i / 10);
printf("%d", r);
}

另外你写一个函数
int rev(int x) { 返回x颠倒以后的结果,比如123返回321,这个我就不帮你写了。}
caozhy
caozhy   Ds   Rxr 2016.09.24 21:05

思路就是0-9,9个数字分别取1个、2个、3个,然后组成回文数。排除掉5以下的,和0开头的。

qq_31663901
qq_31663901 我的意思是代码行简洁点。不过也没事,谢谢啦啦啦!非常感谢
大约一年之前 回复
caozhy
caozhy 回复qq_31663901: 这个算法的复杂度已经是O(n)了,还要怎么简单
大约一年之前 回复
qq_31663901
qq_31663901 厉害啊。怎么想到的?能不能更简洁点。哥
大约一年之前 回复
xianfajushi
xianfajushi   2016.09.24 21:00

回文数至少是2位数的?要构成也很简单,如取1位数*10+位数构成2位数的回文数,取1位数*100+位数构成3位数的回文数,是要这样的?

xianfajushi
xianfajushi 回复qq_31663901: https://code.csdn.net/snippets/1900469
大约一年之前 回复
qq_31663901
qq_31663901 如题啊。找出那个范围没得所有.代码越简洁越好。
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!