解题思路:
    利用map+二进制的压缩,通过异或操作写的这题,不知道怎么回事总是不通过,有没有大牛帮我看一下问题出在哪里了的?


参考代码:

#include<bits/stdc++.h>
#define hh ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
typedef long long ll;
const int maxn=1005;
map<int,int> mmp;
int n;
ll ans=0;
char input[maxn]={0},output[maxn]={0};
/*
八数码管 各段小的以二进制表示
     -
	| |
	 -
	| |
	 -   (好丑啊)
分别是二进制第  
	 0            
	1 2
	 3
	4 5
	 6    位
以十进制表示的话就是
	 1
	2 4
	 8
    16 32
	 64	
*/
void loading(){
	mmp[0]=(1+2+4+16+32+64);
	mmp[1]=(4+32);
	mmp[2]=(1+4+8+16+64);
	mmp[3]=(1+4+8+32+64);
	mmp[4]=(2+4+8+32);
	mmp[5]=(1+2+8+32+64);
	mmp[6]=(1+2+8+16+32+64);
	mmp[7]=(1+4+32);
	mmp[8]=(1+2+4+8+16+32+64);
	mmp[9]=(1+2+4+6+8+32+64);
} 
int main(){
	hh;
	loading();
	cin>>n>>input>>output;
	for(int i=0;i<n;i++){
		int t1=input[i]-'0',t2=output[i]-'0';
		int cnt=mmp[t1]^mmp[t2];  //异或操作
		while(cnt){
			if(cnt&(1)!=0){
				ans++;
			}
			cnt>>=1;
		}
	}
	cout<<ans<<endl;
	return 0;
}

有点犯糊涂了,loading那里面写的数据一定要看仔细,否则就象我这样总是错误了....

点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论