一,数值计算问题:
1,打印所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数字本身,例
2,一个数如果恰好等于它的因子之和,这个数就称为"完数".例如:6的因子为1,2,3,而6=1+2+3,因此6是"完数".编程序找出1000以内的所有完数.
3,有一分数序列:求出这个数列的前20项的和.(32.660259)
4,求之值,其中a是一个数字.例如:(当n=5时),n由键盘输入.
5,已知四位数3025有一个待殊性质:它的前两位数字30和后两位数字25的和是55,而55的平方刚好等于该数(552=3025).试编一程序打印具有这种性质的所有四位数.
分析:从32至99之间的数的平方是四位数,满足题目条件的数必须在这些四位数之内选择.分别把它们按前两位数后两位数进行分离,验证分离后的两个两位数之和的平方是否等于分离前的那个四位数,若等于即打印输出,否则放弃.
6,求两个自然数,其和是667,最小公倍数与最大公约数之比是120:1.(例如:115,552)
迭代法
例题:
用二分法求方程在区间(0,3)之间的一个解.
算法提示:二分法是用计算机求解多项式方程的一中常用方法.基本思想是:,如果和的符号相反,那么在(x1,x2)之间一定存在一个数使f(x)=0即方程的一个解.取x1,x2的中点r,如果f(r)与f(x1)异号,解肯定在(x1,r)之间,否则解在(r,x2)之间,重复直到|f(r)|
穷举法也叫枚举法,它的基本思想是依题目的部分条件确定答案的大致范围,在此范围内对所有可能的情况逐一验证,直到全部情况验证完.若某个情况经验证符合题目的全部条件,则为本题的一个答案.若全部情况经验证后都不符合题目的全部条件,则本题无答案.
用穷举法解题时,答案所在的范围总是要求是有限的,怎样才能使我们不重复的,一个不漏,一个不增的逐个列举答案所在范围的所有情况,就是本节所讲的"列举方法".
列举方法按答案的数据类型,常用的有下面三种.
顺序列举:顺序列举是指答案范围内的各种情况很容易与自然数对应甚至就是自然数,可以按自然数的变化顺序去列举.
排列列举:有时答案的数据形式是一组数的排列,列举出所有答案所在范围内的排列,称为排列列举.
组合列举:(参考组合数学知识)当答案的数据形式为一些元素的组合时,往往需要用组合列举.从几个不同的元素中任取m(mn)个元素组成的一组,就叫做从n个元素取m个元素的一个组合.组合是无序的,如:123,132,321,312,213,231是同一个组合(但是6个不同的排列).
例题:
【问题提出】
找出n个自然数(1,2,3,4,...n)中r个数的组合.例如n=3,r=2,所有的组合为:12,13,23;n=5,r=3,所有的情况为:123,124,125,134,135,145,234,235,245,345.
【算法】
当r=3时用3重循环实现.
for I=5 to1
for j=5 to1
for k=5 to 1
if Ij AND I!=k AND jK AND I>j AND j>k
print I,j,k
练习:
1,求出具有下列两个性质的最小自然数n:
(1),n是个6位数
(2),若将n的各位数移到其余各位之前,所得的新数是n的4倍.
递推法:
例题:
运动会连续开了n天,一共发了m枚奖章,第一天发1枚并剩下(m-1)枚的1/7,第二天发2枚并剩下的1/7,以后每天按规律发放奖章,在最后一天即第n天发剩下的n枚奖章.问运动会一共开了多少天 一共发了几枚奖章
贪心算法
一,算法思想
贪心法的基本思路:
--从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解.当达到某算法中的某一步不能再继续前进时,算法停止.