#include <stdio.h>信哪
void main()
{
int a,b,c,i,j=0
for(i=100i<1000i++)
{
a = i / 100
b = i % 100 / 10
c = i % 10
if(a*a*a+b*b*b+c*c*c==i)
{
printf("%d ",i)
j++
if(j%2==0)
printf("\n"滑如码橡亮)
}
}
}
如果你想学windows编程,强烈建议买《Windows程序设计(第五版)》,这本书虽然老了点,但对windows的原理讲解的很透彻,被称为windows编程圣经。作盯睁洞者是微软的专家,自然对微软的技术比较了解。如果早灶你看完这本,将来想学MFC或者windows的其他方面都会很有好处。如果你想学linux方面的话,你就看看《Unix环境高级编程》,W.Richard Stevens的书本本都是经典,如果你想学网络方面的话,也可以看看凯枯他的《UNIX网络编程》
汉诺塔的一个经典案例就是用递归法解决问题A、B、C三根柱子上放盘子
开始盘子都在A上
盘子必须按照小上打下的顺序放置
要求每次只能移动一个盘子
要将A上的盘子都移到B上。
分析:
设有n个盘子在A上,当n=1时搏指汪
只要将盘子从A->B
即可
当n>1时此问题可分解为以下步骤
1>
把n-1个盘子从柱子A移到C
2>
把第n个盘子从A移到B
3>
把n-1个盘子从C移到B
这是具体的算法
如果你不懂递归的话
这个程序就不好懂。
我给出一个递归的算法实现,你看看
#include
"stdio.h"
int
Hanoi(char
x,char
y,char
z,int
n)
{
if(n==1)
//对应第一种可能
{
printf("1:
%c
->%c\n",x,y)
}
else
//对应第二种可能
{
Hanoi(x,z,y,n-1)
//第二种可能的第一中移动方法
printf("%d:
%c
->%c\n",n,x,y)
Hanoi(z,y,x,n-1)
//第二种可能的第二种移动方法
}
return
0
}
int
main()
{
int
n
printf("请输入汉诺塔的高度:")
scanf("%d",&n)
printf("移动方案是:(系数代表第几个盘子
从上往下计数)\n")
Hanoi('A','B','C',n)
return
0
}
VC
6.0下编译成功!
这是典型的递归用法基仔。
你看这个程序应该跟明确逗帆些。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)