c语言的回溯算法,C语言回溯算法.ppt

C语言回溯算法

begin readln(n); count:=0; for i:=2 to trunc(sqrt(n)) do if n mod i=0 then begin k:=1; a[1]:=i; try(n div i); end; end. 1)构造因子表 procedure makebiao; var i,p:longint; begin k:=0; for i:=2 to trunc(sqrt(n)) do if n mod i =0 then begin inc(k); a[k]:=i; end; p:=2*k; if a[k]*a[k]=n then dec(p); for i:=K+1 to p do a[i]:=n div a[p-i+1]; {for i:=1 to p do write(a[i],' '); writeln(p);} end; 注意:注意 n为完全平方数时:dec(p) N=12: 时 2 3 4 6 N=100时: 2 4 5 10 20 25 50 2)递归求解: procedure try(j,n1,h:longint); { j:待搜索的因子表起点序号,即从a[j]到a[k]中开始搜索因数表中的因数, n1:待分解的尾因子, H:目前从因子表中搜索到的因子数目 :初始状态:try(1,n,0)} var i:longint; begin if h>0 then begin inc(t); for i:=1 to h do write(b[i],'*');writeln(n1); end; for i:=j to k do if n1 div a[i]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值