時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:3描述
dr.kong有一台高階電視機,這台電視機可以接受100個頻道(從0到99編號)。電視的配套遙控器有13個按鈕:
1 2 3 ↑
4 5 6 ↓
7 8 9
— 0
當按"↑"鍵時,當前頻道編號會增加1(如果當前為99頻道,則會切換到0頻道)。如果按"↓"鍵,當前頻道編號會減小1(如果當前為0頻道,則會切換到99頻道)。當要切換到0~9頻道時,可以直接在遙控器上按相應的鍵。當要切換到10~99頻道時,可以先按"—"鍵,然後按2個與頻道編號相對應的數字鍵(即先按與頻道編號的十位數字相對應的鍵,然後按與個位數字相對應的鍵)。
由於遙控器長時間的使用和某些未知原因,遙控器上的某些鍵已經壞了,不能再起作用了。現在你的任務是,能否告訴dr.kong,如何用最少的按鍵次數來將頻道從編號x切換到編號y。 輸入
第一行: n表示有n組測試資料. (1<=n<=5)
對每組測試資料有5行,前4行包含遙控器上每個按鍵的資訊。0表示對應的鍵壞了,1表示對應的鍵可以使用.第5行包含2個整數,分別是x 和 y (0 <= x <= 99; 0 <= y <= 99).
輸出對每組測試資料輸出一行,即將頻道從編號x切換到編號y所需要的最小按鍵次數.如果不可能將頻道從編號x 切換到編號y,則輸出-1.
樣例輸入
2
0 0 1 1
1 1 1 1
1 1 1
1 1
23 52
1 1 1 0
1 1 1 0
1 0 1
0 1
23 52
樣例輸出
4
-1
剛開始用搜尋做的,樣例是搞出來了,提交runtimeerror,也沒改出來,這是網上思路:
#include#include#includeusing namespace std;
#define inf 999
int num[10];//儲存0-9鍵是否損壞
int x,y;
int ad,les;//加,減
int wap;//交換
int swap_num(int a,int b)
else if(b>=10&&num[b/10]==1&&num[b%10]==1&&wap==1)
else return inf;//不能到達
}int add_less(int a,int b)
else
}if(les==1)
else
}return min(ans1,ans2);//二者取最小
}int main()
if(res==inf) printf("-1\n");
else printf("%d\n",res);
} return 0;
}
nyoj 543 遙控器 第五屆河南省程式設計大賽
時間限制 1000 ms 記憶體限制 65535kb 難度 3 描述 dr.kong有一台高階電視機,這台電視機可以接受 100個頻道 從0到 99編號 電視的配套遙控器有 13個按鈕 1 2 3 4 5 6 7 8 9 0 當按 鍵時,當前頻道編號會增加 1 如果當前為 99頻道,則會切換到0頻道...
遙控器中斷
我們以4.9.44版本核心的ir遙控器為例。使用cat proc interrupts命令 其中橫向,第一列是中斷號,第二列是各中斷在cpu中發生的次數,gicv2 是中斷控制器的名稱,第三列也是中斷邏輯號,第四列是驅動註冊的中斷名稱。例如 中斷號 130 對應的就是遙控器的中斷。vendor ms...
遙控器控制互動
最近做到的空調面板調節溫度問題,大概是要通過面板的上下鍵控制溫度,溫度由兩位數字組成,要分別載入十位和個位上的數,不知道為什麼總覺得自己很思維定勢,不夠開闊,想法很單一,總想不到最便捷的方法,直到主程提醒又恍然大悟,我也總在思索 為什麼自己想不到,大概思路就是,定義乙個變數temp,個位除以10取餘...