题目
题目链接
题解实现。
这个题无论如何都是可以做出来的,就是用时长短的问题,所以还是可以采用一些技巧来缩短耗时的。
规定:最上面的二极管编号为0,左上角二极管编号为1,右上角编号为2,正中间的为3,左下角为4,右下角为5,最下面的为6,总共七个二极管; 对于不同的数,同一个二极管的亮暗是不同的,因此我们构建了一个数组来表示他们的状态:
int LED[10][7] = { // LED[i][j]表示数i(i=0~9)的第j个二极管是暗还是亮。下面我规定的顺寻为“上左右下左右下”,1表示亮0表示暗
{1, 1, 1, 0, 1, 1, 1},
{0, 0, 1, 0, 0, 1, 0},
{1, 0, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 1},
{0, 1, 1, 1, 0, 1, 0},
{1, 1, 0, 1, 0, 1, 1},
{1, 1, 0, 1, 1, 1, 1},
{1, 0, 1, 0, 0, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 1}
};
以数字5为例,最上面的二极管是亮的,因此LED[5][0] = 1
;左上角二极管也是亮的,因此LED[5][1] = 1
;右上角二极管是灭的,LED[5][2] = 0
;中间的是亮的,LED[5][3] = 0
,其他类似。
这样每次我们只需要比较两个输入的数字同一个位置上数字之间要进行多少次操作,累加一下就可以了。
代码#include
using namespace std;
string s1, s2;
int n, ans;
int LED[10][7] = { // LED[i][j]表示数i(i=0~9)的第j个二极管是暗还是亮。下面我规定的顺寻为“上左右下左右下”,1表示亮0表示暗
{1, 1, 1, 0, 1, 1, 1},
{0, 0, 1, 0, 0, 1, 0},
{1, 0, 1, 1, 1, 0, 1},
{1, 0, 1, 1, 0, 1, 1},
{0, 1, 1, 1, 0, 1, 0},
{1, 1, 0, 1, 0, 1, 1},
{1, 1, 0, 1, 1, 1, 1},
{1, 0, 1, 0, 0, 1, 0},
{1, 1, 1, 1, 1, 1, 1},
{1, 1, 1, 1, 0, 1, 1}
};
int fun(int a, int b) { // 计算从a变到b要操作多少次, a、b均为0~9
int res = 0;
for(int i = 0;i >n>>s1>>s2;
for(int i = 0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?