a518 - 12468 - Zapping
題目描述
題目要求計算從一個頻道切換到另一個頻道所需的最少按鈕次數,只有向上和向下切換頻道兩個按鈕,頻道總數為 100,頻道號碼循環。
解題思路
由於頻道是循環的,因此從 a 切到 b 可以選擇兩種方式:向上切換或向下切換。向上切換的次數為 (b - a + 100) % 100,向下切換的次數為 (a - b + 100) % 100。取這兩種方式的最小值即可得到最少按鈕次數。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main(){
int a,b;
int min1,min2;
while(cin >> a >> b){
if(a>=0&&b>=0){
if(a-b<0)
min1=a-b+100;
else
min1=a-b;
if(b-a<0)
min2=b-a+100;
else
min2=b-a;
if(min1<=min2)
cout << min1 << endl;
else
cout << min2 << endl;
}
}
}