題目描述
小易來到了一條石板路前,每塊石板上從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...