日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

遥 控 器

發布時間:2023/12/10 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 遥 控 器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

acm.zznu.edu.cn/problem.php?id=1617

?

遙 控 器

時間限制:?1 Sec??內存限制:?128 MB
提交:?25??解決:?9
[提交][狀態]

題目描述

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

提示

來源

第五屆河南省大學生程序設計競賽

?

CODE:

#include<stdio.h>

#define INF 0xfffffff
#define minn(a, b)(a < b ? a : b)

int fly_to(int x, int y);
int walk_to(int x, int y);
int a[10], up, down, flash;

int main()
{
??? int t, i, ans, x, y;

??? scanf("%d", &t);

??? while(t--)
??? {
??????? scanf("%d%d%d%d", &a[1], &a[2], &a[3], &up);
??????? scanf("%d%d%d%d", &a[4], &a[5], &a[6], &down);
??????? scanf("%d%d%d", &a[7], &a[8], &a[9]);
??????? scanf("%d%d", &flash, &a[0]);
??????? scanf("%d%d", &x, &y);

??????? ans = INF;

??????? for(i = 0; i <= 99; i++)
??????? {
??????????? ans = minn(ans, fly_to(x, i) + walk_to(i, y));
??????? }
??????? printf("%d\n", ans == INF ? -1 : ans);
??? }
??? return 0;
}
int fly_to(int x, int y)
{
??? if(x == y)
??????? return 0;

??? if(y / 10 == 0)
??? {
??????? if(a[y])
??????????? return 1;
??????? return INF;
??? }
??? else{
??????? if(flash && a[y/10] && a[y%10])
??????????? return 3;
??????? return INF;
??? }
}

int walk_to(int x, int y)
{
??? int b = INF, c = INF;

??? if(up)
??????? b = (y + 100 - x) % 100;
??? if(down)
??????? c = (x + 100 - y) % 100;

??? return minn(b, c);
}

轉載于:https://www.cnblogs.com/Tinamei/p/4485166.html

總結

以上是生活随笔為你收集整理的遥 控 器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。