跳石板(待改進)

2021-07-23 16:47:53 字數 1262 閱讀 4006

題目描述

小易來到了一條石板路前,每塊石板上從1挨著編號為:1、2、3……. 

這條石板路要根據特殊的規則才能前進:對於小易當前所在的編號為k的 石板,小易單次只能往前跳k的乙個約數(不含1和k)步,即跳到k+x(x為k的乙個非1和本身的約數)的位置。 小易當前處在編號為n的石板,他想跳到編號恰好為m的石板去,小易想知道最少需要跳躍幾次可以到達。 

例如: 

n = 4,m = 24: 

4->6->8->12->18->24 

於是小易最少需要跳躍5次,就可以從4號石板跳到24號石板 .

輸入描述

輸入為一行,有兩個整數n,m,以空格隔開。 

(4 ≤ n ≤ 100000) 

(n ≤ m ≤ 100000)

輸出描述
輸出小易最少需要跳躍的步數,如果不能到達輸出-1

樣例輸入
4 24

樣例輸出
24

思路:遞迴;

結果:執行慢。。。

#include

int now_step;

int end_step;

int flag = 0;

int sucess;

int show_min = -1;

void fun(int my_moment_step,int moment_i,int min)

else

if(min != -1)

while(i < my_moment_step && i <= end_step - my_moment_step)

}else if(my_moment_step + i == end_step)

printf("my_moment_step = %d %d %d \n",my_moment_step+i,i,min);

printf("  wuyu %d\n",show_min);

printf("!!!!!!!!!!!!!!!!!!!show_min = %d\n\n",min);

if(sucess > min)

flag = 1;

return;}}

i++;

}flag = 1;

return;

}int main()

else

}return 0;

}

跳石板(詳解)

題目分析 這道題就是計算從n開始加,最少加幾次等於m,前提條件是每次相加的數必須是當前數的約數 思路分析 將m個石板看做乙個儲存結果的陣列jumpnum,每個jumpnum i 中都儲存著從n到當前位置最小的步數,如果是0,則說明不能走到這個位置。從起點開始對jumpnum進行遍歷,先求當前位置的所...

跳石板問題 C

小易來到了一條石板路前,每塊石板上從1挨著編號為 1 2 3 這條石板路要根據特殊的規則才能前進 對於小易當前所在的編號為k的石板,小易單次只能往前跳k的乙個約數 不含1和k 步,即跳到k x x為k的乙個非1和本身的約數 的位置。小易當前處在編號為n的石板,他想跳到編號恰好為m的石板去,小易想知道...

動態規劃 跳石板 python

在這裡插入 片 n,m int x for x in input split steps i for i in range n,m 1 儲存由n到m之間的石板 commondivisors 儲存由n到m之間每一塊石板允許跳的步數 for i in steps commondivisori x for...