注册 登录
编程论坛 C++教室

怎么做

wsaaa 发布于 2007-05-08 21:40, 823 次点击
如果要把10000以内所有的回文数都输出应该怎么 编程啊,请大虾指点.
17 回复
#2
fyi11062007-05-08 21:55
穷举,从1到10000逐个试。这个是没有优化过的算法。
#3
I喜欢c2007-05-09 09:05
这个不难~``  LZ为何不自己动动手?
#4
neverDie2007-05-09 13:02
回文是指正反都一样的数吧?

呵呵!
#5
aipb20072007-05-09 13:42
用穷举可以实现,效率就差了。

想个什么算法吧!
#6
wsaaa2007-05-09 15:00
回复:(fyi1106)穷举,从1到10000逐个试。这个是没有...

怎么个穷举法啊,我不是很明白啊,能说明白一点吗?谢谢!

#7
wsaaa2007-05-09 15:00
回复:(neverDie)回文是指正反都一样的数吧?[em04]...
是 的啊.
#8
wsaaa2007-05-09 15:01
回复:(I喜欢c)这个不难~`` LZ为何不自己动动手?...
就是不会啊,不然怎么会在论坛里问呢.
#9
I喜欢c2007-05-09 16:07

你将他转换成字符串在进行比较...

#10
wsaaa2007-05-09 21:07
回复:(I喜欢c)你将他转换成字符串在进行比较...

那不全是数字吗?而且不知道有几位啊,怎么用字符串啊?

#11
wsaaa2007-05-10 18:48
回复:(fyi1106)穷举,从1到10000逐个试。这个是没有...
能写个源程序吗?谢谢了.
#12
踏魔狼2007-05-10 22:30

觉得这个挺有意思的,写了一下.
int main()
{
for(int i=10; i<10000; i++)
{
int a = i%10;
if(a==0) continue;
int b = i/10;
if(b<10)
if(a==b)
{
cout<<i<<" "; continue;
}
int a_a = b%10;
int b_b = b/10;
if(b_b<10)
if(a==b_b)
{
cout<<i<<" "; continue;
}
int a_a_a = b_b%10;
int b_b_b = b_b/10;
if(b_b_b<10)
if((a==b_b_b)&&(a_a==a_a_a))
{
cout<<i<<" "; continue;
}
}
cout<<endl;
return 0;
}

#13
踏魔狼2007-05-10 22:32
不太清楚回文数是不是这个意思.
是吗???
#14
wsaaa2007-05-11 20:11
回复:(踏魔狼)不太清楚回文数是不是这个意思.是吗...

我说的是你写的意思啊,能发信息告诉我你写的语句的意思吗,我有点看不明白啊,非常感谢啊!

#15
踏魔狼2007-05-12 17:10
说明如下:
int main()
{
for(int i=10; i<10000; i++)
{
int a = i%10; // 得到个位数给a
if(a==0) continue; // 如果个位是零的不可能是回文数,下一个.
int b = i/10; // 进一位,例如:151变为15(因为是整数,所以小数被舍去).
if(b<10) // 如果b小于10分析结束,则它是一个十位数
if(a==b) // 再确定十位与个位是否相等.
{
cout<<i<<" "; continue;
}
// 以下同理.
int a_a = b%10;
int b_b = b/10;
if(b_b<10)
if(a==b_b)
{
cout<<i<<" "; continue;
}
int a_a_a = b_b%10;
int b_b_b = b_b/10;
if(b_b_b<10)
if((a==b_b_b)&&(a_a==a_a_a))
{
cout<<i<<" "; continue;
}
}
cout<<endl;
return 0;
}
#16
wsaaa2007-05-12 17:59
回复:(踏魔狼)说明如下:int main(){ for(int i...
真是很感谢你啊!
#17
踏魔狼2007-05-12 19:07
不客气!
#18
amdam230002007-05-13 17:18
回复:(wsaaa)回复:(I喜欢c)你将他转换成字符串...
利用0~~9的ASCII码应该可以,他们的ASCII码是连续的~
1