《ACM程序设计与算法》课程报告模板.docVIP

  • 12
  • 0
  • 约2.02千字
  • 约 4页
  • 2017-08-11 发布于河南
  • 举报

《ACM程序设计与算法》课程报告模板.doc

2010~2011学年第2学期《》课程报告 二 三 四 五 六 总分 格雷码问题解题报告 一、研究报告(80分) 1. 题目描述(10分) 在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环 特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小 化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产 生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。它在任意两个相邻的数之 间转换时,只有一个数位发生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。另外由于最大数与最小数之间也仅一个数不同,故通常又叫雷反射码 或循环码。下表为几种自然二进制码与格雷码的对照表:十进制数 自然二进制数 格雷码 0 0000 0000 1 0001 0001 2 0010 0011 3 0011 0010 4 0100 0110 5 0101 0111 6 0110 0101 7 0111 0100 8 1000 1100 9 1001 1101 10 1010 1111 11 1011 1110 12 1100 1010 13 1101 1011 14 1110 1001 15 1111 1000 ? 1、自然二进制码转换成二进制格雷码.自然二进制码转换成二进制格雷码,其法则是保留自然二进制码的最高位作为格雷码的最高位,而次高位格雷码为二进制码的高位与次高位相异或,而格雷码其余各位与次高位的求法相类似。 2、二进制格雷码转换成自然二进制码。二进制格雷码转换成自然二进制码,其法则是保留格雷码的最高位作为自然二进制码的最高位,而次高位自然二进制码为高位自然二进制码与次高位格雷码相异或,而自然二进制码的其余各位与次高位自然二进制码的求法相类似。 Sample Input 2 13 Sample Output 11 1011#include stdio.h #include string.h int main(){ char b[32]; int n, i, k; while (scanf(%d, n) == 1){ ?? if (n == 0){ ??? printf(0\n); continue; ?? } ?? k = 0; ?? while (n 0){ ??? b[k++] = n1; ??? n = 1; ?? } ?? printf(%d, b[k-1]); ?? for (i=k-2; i=0; --i){ ??? printf(%d, b[i]^b[i+1]); ?? } ?? printf(\n); } return 0; } 4. 程序测试及分析(10分) 十进制 格雷码 0 1 3 10 10 1111 -1 -1 -20 -1 测量实际消耗的时间:1194 测量实际消耗空间:8 5. 总结(20分) 总结解题思路及相关内容,如程序设计中的关键问题、程序改进等。 对解acm题一般是先建模,找出数学模型,对于格雷码这道题,就是找出十进制与格雷码间的规律,然后就用循环来解决问题了。 例如格雷码:1010 要将它变为自然二进制: 0 与第四位 1 进行异或结果为 1 上面结果1与第三位0异或结果为 1 上面结果1与第二位1异或结果为 0 上面结果0与第一位0异或结果为 0 因此最终结果为:1100 这就是二进制码即十进制 12 ,觉得这acm比赛常用的C语言和数学的逻辑有很大的关联,C最重要的是算法,讲究逻辑运算,使人的思维变得灵活性和逻辑性,这也是acm比赛的初衷吧,当然真正学好,那收益不只这一点点.通过8周的学习,虽然时间有点短,但对acm大赛有了一定的了解,对专业的影响真的很大.我们学的主要是C,以前被里面的类,对象,父类,子类…绕来绕去,搞的头都晕了.现在看以前的书,觉得也就不过如此.还有这个学期一起的数据结构,开始上的时候,就觉得这跟算法有很大相关,在acm上课的时候能学到相关的知识.数据结构的算法刚接触,这有点难度,还用C写的。 这门课程共上了三次实验课,16个学时的学习,很仓促,虽然没学到好多什么算法的东西,但对解题思路上、建模上还是学到一点,虽然我不是学计算机的,但是多学一点还是没有什么坏处的。 3

文档评论(0)

1亿VIP精品文档

相关文档