Presentation is loading. Please wait.

Presentation is loading. Please wait.

小学生游戏.

Similar presentations


Presentation on theme: "小学生游戏."— Presentation transcript:

1 小学生游戏

2 题目规则 题目先给出数a(a是一个正整数,不超过50位),再给出目标数b(同样是一个正整数,不超过50位), 数的运算有三种: 1:使当前数加上 2:使当前数加上2006 3:使当前数乘2

3 例1:小艺给出数a=1,给出数b=1987437 那么最快我们经过3次指定运算可以使1变成1987437 1
例1:小艺给出数a=1,给出数b=   那么最快我们经过3次指定运算可以使1变成   1*2=2;(第3种变换)    = ;(第1种变换)    = ;(第2种变换) 例2:小艺给出数a=1,给出数b=128   那么最快我们经过7次指定运算可以使1变成128   1*2*2*2*2*2*2*2=128(均采用第3种变换),但是因为n>6,所以按题意输出-1。

4 1.模型 将状态A转化为状态B 2.算法设计 比较容易想到的也是比较典型的 深度优先搜索,广度优先搜索 3.比较两种算法 因为是求最短的变换次数,考虑用广度优先搜索. 优点:搜索到的结果必然是变换次数最少的 缺点:需要较大存储空间(以空间为代价)

5 结构图

6 广度优先搜索 广度优先实行一层一层扩展结点 Q1=1;//指向每一层第一个结点 Q2=1;//指向每一层最后一个结点 do {
for (i=Q1;i<=Q2;i++) expand(i);//扩展第i个结点 Q1=Q3;//改变Q1指向下一层第一个结点Q3   Q2=Q4;//改变Q2指向下一层最后一个结点Q4 }while((Q1>Q2)||(解的数目num>0));

7 广度优先搜索 具体扩展每个结点的过程 Void expand(int i) { for (j=1;j<=n;j++)
then { 记录新结点;判断是否为解; Q4++; }

8 值得注意的地方 1.变换次数为0的情况 如果算法不能照顾到这种情况,那就事先先判断处理一下. 2.大数据的情况
数据精度不够,或者数据会溢出.考虑用高精度.(用数组存储一个大数)


Download ppt "小学生游戏."

Similar presentations


Ads by Google