解题思路:
利用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那里面写的数据一定要看仔细,否则就象我这样总是错误了....
0.0分
0 人评分
C语言训练-计算:t=1-1/(2*2)-1/(3*3)-...-1/(m*m) (C语言代码)浏览:799 |
最长单词 (C语言代码)浏览:1474 |
printf基础练习2 (C语言代码)浏览:322 |
拆分位数 (C语言代码)浏览:1361 |
打水问题 (C语言代码)浏览:1148 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1327 |
WU-蓝桥杯算法提高VIP-Quadratic Equation (C++代码)浏览:1808 |
众数问题 (C语言代码)浏览:911 |
【计算两点间的距离】 (C语言代码)浏览:1522 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:676 |