题目543遥控器

编程入门 行业动态 更新时间:2024-10-27 17:12:12

题目543<a href=https://www.elefans.com/category/jswz/34/1757208.html style=遥控器"/>

题目543遥控器

遥 控 器


时间限制: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.
样例输入
20 0 1 1 1 1 1 11 1 11 123 521 1 1 01 1 1 01 0 10 123 52
样例输出

4-1



#include<stdio.h>
int num[10],oper[4];
int stepOfDir(int m,int n)   //使用上下键时从m到n最少需要多少步
{int res=200,down,up;if(m==n)return 0;if(oper[1]==0&&oper[0]==0)return -1;up=(n+100-m)%100;down=100-up;if(oper[1]==1)        //↑可以使用res=up;if(oper[0]==1)         //↓可以使用res=res<down?res:down;return res;            //-1表示无法使用
}
int test(int m,int n)       //测试能否使用数字键切换到n频道
{int a,b;if(m==n)return 0;if(n<10 && num[n]==1)return 1;else if(n<10 && num[n]==0)return -1;b=n%10;a=n/10;if(num[a]==1 && num[b]==1 && oper[2]==1)return 3;elsereturn -1;
}
int main()
{int t,x,y,res,i;scanf("%d",&t);while(t--){res=200;scanf("%d%d%d%d",&num[1],&num[2],&num[3],&oper[1]);  //oper[1]代表↑scanf("%d%d%d%d",&num[4],&num[5],&num[6],&oper[0]);    //oper[0]代表↓scanf("%d%d%d",&num[7],&num[8],&num[9]);scanf("%d%d",&oper[2],&num[0]);     //oper[2]代表  —scanf("%d%d",&x,&y);for(i=0;i<=99;i++){int a=test(x,i);int b=stepOfDir(i,y);if(a>-1 && b>-1 && res>a+b)res=a+b;}if(res==200)printf("%d\n",-1);elseprintf("%d\n",res);}return 0;
}


更多推荐

题目543遥控器

本文发布于:2023-07-01 17:52:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/979071.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:遥控器   题目

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!