7-3 求最小码距(完整版) (10 分)

计算机组成原理老师给小明出了一道求最小码距的题目,
有以下由1个字节组成的合法编码集{0xA9,0xC7,0xDF,0xBE},该编码集的最小码距是__小明知道码距,也知道最小码距的概念。码距是指信息编码中,两个合法编码对应位上编码不同的位数,比如10101和00110从第1位开始    依次有第1位、第4、
第5位不同,因此码距为3**,任意组合的码距最小值称为最小码距。
小明想借助计算机帮忙自己算出答案,今后无论老师出何种组合,他都能一键运行答案,于是他开始了最小码距
的代码编写。
输入格式:
第一行读入1个整数N(2≤N≤8),代表需要输入的编码个数。第二行输入N个编码(用十六进制表示,编码位数≤8),中间用空格隔开。输出格式:
1.根据用户输入编码的顺序依次进行比较,每一行两两编码间的码距以及具体哪几位不一样(最低位为第1位)
输出有两种格式:(1)当码距>0时,需要输出具哪几位不一样(如:0x2 0x1 CD:2,bit:1|2|)(2)当码距=0时,只需要输出前半段(如0x2 0x2 CD:0)2.最后一行数据输出最小码距
3.其他要求:输出所有编码时都需要加前缀0x,如0x0
输入样例:
在这里给出一组输入。例如:4
0xa9 0xc7 0xdf 0xbe
6
0xa9 0xc7 0xdf 0xbe 0xbe 0x0
输出样例:
在这里给出相应的输出。例如:0xa9 0xc7 CD:5,bit:2|3|4|6|7|
0xa9 0xdf CD:5,bit:2|3|5|6|7|
0xa9 0xbe CD:4,bit:1|2|3|5|
0xc7 0xdf CD:2,bit:4|5|
0xc7 0xbe CD:5,bit:1|4|5|6|7|
0xdf 0xbe CD:3,bit:1|6|7|
The MinCD is 2
0xa9 0xc7 CD:5,bit:2|3|4|6|7|
0xa9 0xdf CD:5,bit:2|3|5|6|7|
0xa9 0xbe CD:4,bit:1|2|3|5|
0xa9 0xbe CD:4,bit:1|2|3|5|
0xa9 0x0 CD:4,bit:1|4|6|8|
0xc7 0xdf CD:2,bit:4|5|
0xc7 0xbe CD:5,bit:1|4|5|6|7|
0xc7 0xbe CD:5,bit:1|4|5|6|7|
0xc7 0x0 CD:5,bit:1|2|3|7|8|
0xdf 0xbe CD:3,bit:1|6|7|
0xdf 0xbe CD:3,bit:1|6|7|
0xdf 0x0 CD:7,bit:1|2|3|4|5|7|8|
0xbe 0xbe CD:0
0xbe 0x0 CD:6,bit:2|3|4|5|6|8|
0xbe 0x0 CD:6,bit:2|3|4|5|6|8|
The MinCD is 0
#include<bits/stdc++.h>
using namespace std;int main(){int n;int minL = 1000;cin >> n;int num[n];string str[n];string str1[n];for(int i = 0; i < n; i++){str1[i] = "";}string str2[16] = {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};for(int i = 0; i < n; i++){cin >> str[i];for(int j = 2; j < str[i].length(); j++){if(str[i][j] >= '0' && str[i][j] <= '9'){str1[i] = str1[i] + str2[str[i][j] - '0'];}else{str1[i] = str1[i] + str2[ 9 + str[i][j] - 'a' + 1];}}}for(int i = 0; i < n - 1; i++){int len = 0, index = 0;for(int j = i; j < n; j++){len = 0, index = 0;if(i != j){cout << str[i] << " " << str[j] << " CD:";int a = str1[i].length();int b = str1[j].length();int c = max(a, b);int d = min(a, b);int f = c;int sum[c];fill(sum, sum + c, 0);if(a > b){for(int k = b - 1; k >= 0; k--){if(str1[i][f - 1] != str1[j][k]){sum[index] = 1;len++;}index++;f--;}for(int k = f - 1; k >= 0; k--){if(str1[i][k] == '1'){sum[index] = 1;len++;}index++;}}else if(a < b){for(int k = a - 1; k >= 0; k--){if(str1[j][f - 1] != str1[i][k]){sum[index] = 1;len++;}index++;f--;}for(int k = f - 1; k >= 0; k--){if(str1[j][k] == '1'){sum[index] = 1;len++;}index++;}}else{for(int k = a - 1; k >= 0; k--){if(str1[i][k] != str1[j][k]){sum[index] = 1;len++;}index++;}}if(len < minL){minL = len;}if(len){cout << len  << ",bit:";}else{cout << len;}for(int k = 0; k < index; k++){if(sum[k]){cout << k + 1 << "|";}}cout << endl;}}}cout << "The MinCD is " << minL;return 0;
}

7-3 求最小码距(完整版) (10 分)相关推荐

  1. 求最小码距(完整版)

    计算机组成原理老师给小明出了一道求最小码距的题目,有以下由1个字节组成的合法编码集{0xA9,0xC7,0xDF,0xBE},该编码集的最小码距是__ 小明知道码距,也知道最小码距的概念.码距是指信息 ...

  2. 求最小码距 (10 分)

    求最小码距 (10 分) 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB 题目描述 计算机组成原理老师给小明出了一道求最小码距的题目, 有以下由1个字节组成的合法编码集{0xA ...

  3. 7-3 求最小码距 (10 分)

    计算机组成原理老师给小明出了一道求最小码距的题目, 有以下由1个字节组成的合法编码集{0xA9,0xC7,0xDF,0xBE},该编码集的最小码距是__ 小明知道码距,也知道最小码距的概念.码距是指 ...

  4. 分支类1 7-6 判断体质完整版 (10 分)

    体质指数( BMI)是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准.BMI的计算方法如下: 体质指数(BMI) = 体重(kg)/ 身高( m )的平方. 胖瘦程度 BMI 偏瘦 BMI & ...

  5. 求解n个二进制数之间的最小码距

    计算机组成原理老师给小明出了一道求最小码距的题目, 有以下由1个字节组成的合法编码集{0xA9,0xC7,0xDF,0xBE},该编码集的最小码距是__ 小明知道码距,也知道最小码距的概念.码距是指 ...

  6. php留言板源码免mysql_PHPMYSQL留言板源码(终极完整版).doc

    PHPMYSQL留言板源码(终极完整版).doc 数据库结构?:(库名:lyb) 表一: admin? 字段: id(int11?) name(varch?vr) passw?ord(varch?vr ...

  7. 证明最小码距与纠检错图像_最小码距和检错纠错能力关系

    最小码距和检错纠错能力关系 一.码距? 码距就是两个码字 C1 与 C2 之间不同的比特数.如: 1100 与 1010 的码距 为 2;1111 与 0000 的码距为 4 . 一个编码系统的码距就 ...

  8. (7,4)汉明码编码译码及计算最小码距——基于MATLAB编程

    (7,4)汉明码编码译码及计算最小码距--基于MATLAB编程 编码 A=[1 1 1 0; 0 1 1 1; 1 1 0 1] %A 可随便写四个不为0的列向量,是为了生成一致校验矩阵 H=[A e ...

  9. 【181126】VC++开发的GIS系统源码无错完整版源代码

    源码下载简介 VC++开发的GIS系统源码无错完整版,陈建春书中的一个源代码,可以顺利编译完成,GIS软件VC版的不太多,这一个也算是一个能为VC朋友提供参考的好实例吧.这套系统可完成VC++使用鼠标 ...

最新文章

  1. mongodb检查点_mongodb 监控命令mongostat
  2. matlab中单独存图_Matlab中图片保存的四种方法
  3. web服务器的性能体现,Web应用服务器的性能问题分析
  4. 类文件结构-method-init和类文件结构-method-main
  5. linux 进入一个中文乱码的目录的方法
  6. (十一)nodejs循序渐进-高性能游戏服务器框架pomelo之启动流程和组件
  7. mysql text 函数的使用方法_MySQL空间数据操作:GeomFromText()和astext()函数报错解决...
  8. [log4j]log4j简单配置
  9. 华为云基于云原生媒体网络,又出重磅新品
  10. Atitit.实现反向代理(1)----url rewrite 配置and内容改写 and -绝对路径链接改写 java php
  11. AutoCAD二次开发——引线标注
  12. html转换成chm乱码,【全部解决】用Docbook生成htmlhelp + 【完全解决】生成的chm中标题和左边的索引目录是乱码的问题...
  13. 印刷行业中过UV是什么意思?
  14. 对摄影术语(及其在光线追踪的应用)的简要概括
  15. Python Random随机数
  16. Linux下安装jdk-6u45-linux-x64.bin
  17. 在岸人民币和离岸人民币的区别
  18. 电子制造企业如何做好商机管理,促成更多交易
  19. 原生JS实现全屏视频背景滚动淡出
  20. CorelDRAW 10基础教程(二)(转)

热门文章

  1. R星安装不完全无法载入social club(错误码:1)解决办法
  2. 【安卓wechat微信导出聊天记录】
  3. 在aws亚马逊云EC2上创建root用户,并使用root用户登录
  4. 打字母案例完整版(C#)
  5. 英特尔第十代处理器为什么不支持win7_Intel 第十代CPU(部分U)装WIN7
  6. Mac设置命令行代理
  7. OLED显示与LCD相比的优缺点都有哪些
  8. 《沟通的技术——让交流、会议与演讲更有效》一1.1 一切尽在计划之中
  9. 智能科普:VR、AR、MR的区别
  10. 关于WM_COMMAND与WM_NOTIFY