C/C++等級考試(1~8級)全部真題?點這里
第1題:數字變換
給定一個包含5個數字(0-9)的字符串,例如 “02943”,請將“12345”變換到它。 你可以采取3種操作進行變換
1. 交換相鄰的兩個數字
2. 將一個數字加1。如果加1后大于9,則變為0
3. 將一個數字加倍。如果加倍后大于9,則將其變為加倍后的結果除以10的余數。
最多只能用第2種操作3次,第3種操作2次 求最少經過多少次操作可以完成變換。
時間限制:1000
內存限制:65536
輸入
有最多 100,000 組數據 每組數據就是包含5個數字的字符串
輸出
對每組數據,輸出將12345變換到給定字符串所需要的最少操作步數。如果無法變換成功,輸出-1
樣例輸入
12435
99999
12374
樣例輸出
1
-1
3
提示
由于測試數據太多,如果對每組數據都從頭進行搜索,就會超時。 建議先做預處理,即以“12345”作為初始狀態做一遍徹底