| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 767 人关注过本帖
标题:如何消除冗余序列算法
只看楼主 加入收藏
jcao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-6-26
收藏
 问题点数:0 回复次数:0 
如何消除冗余序列算法

一、题目:消除冗余序列算法
二、目的与要求
1. 目的:
(1)通过在许多大数值计算中,“1”是代表执行某种运算,如果在“0”、“1”组成的字符串序列中,“1”的个数多少决定整个问题计算复杂度和计算速度的高低,设计一种算法来消除序列中冗余字符“1”的个数是实际非常需要的。培养学生综合利用C++语言进行科学计算,使学生将所学知识转化为分析和设计简单实际问题的能力,学会查资料和工具书。
(2)提高学生建立程序文档、归纳总结的能力。
(3)进一步巩固和灵活运用先修课程《计算机文化基础》有关文字处理、图表分析、数据归整、应用软件之间图表、数据共享等信息技术处理的综合能力。
2. 基本要求:
要求用C++语言编程,在Visual C++环境下调试完成;
三、设计方法和基本原理
1. 课题功能描述
在0、1组成的字符串序列中,如果存在连续n个(n>=3)“1”构成的子序列则将该子序列改为10…02,其中0的个数为n-1个。
例如:
原始序列为: 111110011110111011;
修改后的序列为: 1000020100021002011。
2. 问题的解决方案:
定义一个比较大的字符数组;
从键盘读入数据;检查数据的合法性(如果有非字符“0”或字符“1”就认为非法),如果非法重新读入;
确定字符串的长度。
从字符串的尾部开始判断字符“1”的个数,如果数目超过3个,则最后一位改为“2”,而将中间n-1位改为“0”,而将前面原始是“0”的位置改为“1”。
如果是最低位0位开始有超过3个“1”,还需要将数据整体后移一位,然后再将最后一位改为“2”,而将中间n-1位改为“0”,而将第0位放置为“1”。
例如上面例子中,原始序列是18位,而修改后序列为19位,原因就是最低5位为“1”,因此需要将数据整体后移一位,并且第0位放置为“1”。
四、创新要求
在基本要求达到后,进行创新设计,输入数据不是字符串,而是大于232-1的大整数,将其转换成为二进制表示后进行如上处理。

搜索更多相关主题的帖子: 冗余 序列 算法 消除 
2007-06-28 14:18
快速回复:如何消除冗余序列算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.042331 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved