題目簡述:把 i (a ≤ i ≤ b) 丟入 function,求所有 i 產生的遞迴層數的最大值。
題目 / ZJ
陷阱:題目給的 a 不一定小於 b。
解法:for(int i=min(a, b); i<=max(a, b); i++)。
#include <iostream>
using namespace std;
int cnt;
void f(int n){
cnt++;
if(n == 1) return;
if(n % 2 != 0) f(3*n+1);
else f(n/2);
}
int main(){
ios::sync_with_stdio(0), cin.tie(0);
int a, b;
while(cin >> a >> b){
int Max = 0;
for(int i=min(a,b); i<=max(a,b); i++){
cnt = 0;
f(i);
Max = max(Max, cnt);
}
cout << a << ' ' << b << ' ' << Max << '\n';
}
}
👉 回到:【CPE大學程式能力檢定】目錄