广联达5.18笔试编程题,计算每次LED灯变化时,灯管点亮或者熄灭的次数之和,输入为一个数字字符串例如:102,代表LED灯从熄灭状态变化为1,由1变化为0,由0变化为2,计算灯管熄灭或点亮的总次数。
以102为例,LED灯从熄灭状态变化为2,灯管变化次数为2,从1到0变化次数为4,从0到2变化次数为3,所以总次数为9。
LED灯管编号:1~7(中间灯管为7)
熄灭到102的变化过程如下:
C++代码:
#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
int main() {
string s;
cin>>s;
vector<vector<int> > a;
vector<int> b;
int count=0;
//a[0][0]-a[0][6] 0
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(0);
a.push_back(b);
b.clear();
//a[1][0]-a[1][6] 1
b.push_back(0);
b.push_back(0);
b.push_back(1);
b.push_back(0);
b.push_back(0);
b.push_back(1);
b.push_back(0);
a.push_back(b);
b.clear();
//a[2][0]-a[2][6] 2
b.push_back(0);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(0);
b.push_back(1);
a.push_back(b);
b.clear();
//a[3][0]-a[3][6] 3
b.push_back(0);
b.push_back(1);
b.push_back(1);
b.push_back(0);
b.push_back(1);
b.push_back(1);
b.push_back(1);
a.push_back(b);
b.clear();
//a[4][0]-a[4][6] 4
b.push_back(1);
b.push_back(0);
b.push_back(1);
b.push_back(0);
b.push_back(0);
b.push_back(1);
b.push_back(1);
a.push_back(b);
b.clear();
//a[5][0]-a[5][6] 5
b.push_back(1);
b.push_back(1);
b.push_back(0);
b.push_back(0);
b.push_back(1);
b.push_back(1);
b.push_back(1);
a.push_back(b);
b.clear();
//a[6][0]-a[6][6] 6
b.push_back(1);
b.push_back(1);
b.push_back(0);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
a.push_back(b);
b.clear();
//a[7][0]-a[7][6] 7
b.push_back(0);
b.push_back(1);
b.push_back(1);
b.push_back(0);
b.push_back(0);
b.push_back(1);
b.push_back(0);
a.push_back(b);
b.clear();
//a[8][0]-a[8][6] 8
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(1);
a.push_back(b);
b.clear();
//a[9][0]-a[9][6] 9
b.push_back(1);
b.push_back(1);
b.push_back(1);
b.push_back(0);
b.push_back(1);
b.push_back(1);
b.push_back(1);
a.push_back(b);
b.clear();
//a[10][0]-a[10][6] first
b.push_back(0);
b.push_back(0);
b.push_back(0);
b.push_back(0);
b.push_back(0);
b.push_back(0);
b.push_back(0);
a.push_back(b);
b.clear();
for(int i=0;i<s.size()-1;i++)
{
for(int j=0;j<7;j++)
{
if(a[s[i+1]-'0'][j]!=a[s[i]-'0'][j])
{
count++;
}
}
}
for(int k=0;k<7;k++)
{
if(a[s[0]-'0'][k]!=a[10][k])
{
count++;
}
}
cout<<count<<endl;
return 0;
}