- 博客(1)
- 资源 (15)
- 收藏
- 关注
原创 大学生回家必做的六件事
1、在父母面前,不能生气。无论是你得知在学校考试全挂了,还是你最爱的人给你提出分手,你都不能有一丝不高兴的样子,因为这不是父母的错;哪怕就算是是父母生气拿我们来出气,我们也不能有情绪,毕竟你是父母的唯一,你的表情情绪直接牵动着父母,何况是春节… 2、陪父母一起笑。当父母看到一个电视镜头、一句笑话、或是你的一个动作…她们笑的时候,你要陪着一起笑,父母内心深处最想的还是你的笑,不要觉得这个不好
2010-01-08 21:59:00
821
赫夫曼编码(C语言版本)
#include
#define MAXBIT 2000 /*定义哈夫曼编码的最大长度*/
#define MAXVALUE 1000 /*定义最大权值*/
#define MAXLEAF 256 /*定义哈夫曼树中最多叶子节点个数*/
#define MAXNODE MAXLEAF*2-1 /*哈夫曼树最多结点数*/
typedef struct { /*哈夫曼编码结信息的构*/
char bit[MAXBIT];
int start;
}Hcodetype;
typedef struct { /*哈夫曼树结点的结构*/
int weight;
int parent;
int lchild;
int rchild;
char ch;
}Hnodetype;
char ch[MAXVALUE*5];
static int numbers;
int number=0;
char varyCh[MAXLEAF];
int weight[MAXLEAF];
int pos[256];
int root;
char allHc[MAXVALUE*20];
/*----------分析输入的字符串--------------*/
void analyze(char ch[],int numbers,char varyCh[],int weight[],int& number){
int temp[256]={0};
int n=0;
for(int i=0;i<numbers;i++){
temp[(int)ch[i]]++;
}
for(int j=0;j<256;j++){
if(temp[j]!=0){
varyCh[n]=(char)j;
weight[n]=temp[j];
pos[j]=n;
n++;
}
}
number=n;
}
void huffmantree(Hnodetype huffnode[MAXNODE]) /*构造哈夫曼树的函数*/
{
int i,j,m1,m2,x1,x2;
analyze(ch,numbers, varyCh, weight,number);
for(i=0;i<number;i++) /*存放哈夫曼树结点的数组huffnode[]初始化*/
{
huffnode[i].weight=weight[i];
huffnode[i].parent=-1;
huffnode[i].lchild=-1;
huffnode[i].rchild=-1;
huffnode[i].ch=varyCh[i];
}
for(i;i<2*number;i++){
huffnode[i].weight=0;
huffnode[i].parent=-1;
huffnode[i].lchild=-1;
huffnode[i].rchild=-1;
}
/* for(i=0;i<n;i++) /*输入入N个叶子节点的权值
{
printf("please input %d character's weight\n",i);
scanf("%d",&huffnode[i].weight);
} */
for(i=0;i<number-1;i++){/*开始循环构造哈夫曼树*/
m1=m2=MAXVALUE; //m1拥有最小值
x1=x2=0; //记录一次循环后找到最小和次小节点的位置
for(j=0;j<number+i;j++){
if(huffnode[j].weight<m1&&huffnode[j].parent==-1)
{
m2=m1;x2=x1;m1=huffnode[j].weight;x1=j;
}
else if(huffnode[j].weight<m2&&huffnode[j].parent==-1)
{
m2=huffnode[j].weight;x2=j;
}
}
huffnode[x1].parent=number+i;
huffnode[x2].parent=number+i;
huffnode[number+i].weight=huffnode[x1].weight+huffnode[x2].weight;
huffnode[number+i].lchild=x1;
huffnode[number+i].rchild=x2;
}
}
void unhanffman(Hnodetype huffnode[]){ //根据哈夫曼树和所有字符的编码进行译码
int i=0;
int r=root; //指向根节点
while((allHc[i]!=NULL)){
if(allHc[i]=='0')r=huffnode[r].lchild;
else r=huffnode[r].rchild;
if(huffnode[r].lchild==-1&&huffnode[r].rchild==-1)
{
printf("%c",huffnode[r].ch);
r=root;
}
i++;
}
printf("\n\n");
}
void main()
{
Hnodetype huffnode[MAXNODE];
Hcodetype leafcode[MAXLEAF],cd;
int i,j,c,p,num=0,posite,allhc=0;
char temp;
printf(" 赫夫曼编码的应用 \n\n");
printf(" ○○○○○○○○○○○○○○○○○○○○○○○○○ ");
printf("\n\n");
printf(" ●请输入字符串并以#号结束");
//scanf("%d",&n); /*输入叶子节点个数*/
/*----------循环接受字符-------------------*/
while((ch[num]=getchar())!='#'){
num++;
}
numbers=num; //得到字符个数-----------------
huffmantree(huffnode); /*建立哈夫曼树*/
FILE *fp;
if(!(fp=fopen("D:\\text1.txt","w")))
{
printf("文件打开失败!");
}
for(i=0;i<number;i++) /*该循环求每个叶子节点对应字符的哈夫曼编码*/
{
cd.start=number-1;c=i;
p=huffnode[c].parent;
while(p!=-1) //逆向求叶子节点哈夫曼编码左0右1
{
if(huffnode[p].lchild==c) cd.bit[cd.start]='0';
else cd.bit[cd.start]='1';
cd.start--;c=p;
p=huffnode[c].parent;
root=c;
} //循环结束p指向根节点
for(j=cd.start+1;j<number;j++) /*保存求出的每个叶节点的哈夫曼编码和编码的起始位*/
{
leafcode[i].bit[j]=cd.bit[j];
fputc(leafcode[i].bit[j],fp);
}
leafcode[i].start=cd.start;
//leafcode[i].ch=huffnode[i].ch;
}
printf("\n");
printf(" --------------------------------------------------------------- \n");
printf("\n");
for(i=0;i<number;i++) /*输出每个叶子节点的哈夫曼编码*/
{
printf(" ☆字符:%c",huffnode[i].ch);
printf(" 次数:%d",huffnode[i].weight);
printf("\n");
printf(" ★'%c'字符的编码是:",huffnode[i].ch);
for(j=leafcode[i].start+1;j<number;j++)
printf("%c",leafcode[i].bit[j]);
printf("\n");
}
fclose(fp);
printf("\n");
printf(" --------------------------------------------------------------- \n");
printf("\n");
printf(" ☆字符串被编码成为:");
if(!(fp=fopen("D:\\text1.txt","r")))
{
printf("文件打开失败!");
}
for(i=0;i<numbers;i++) /*所有字符的哈夫曼编码*/
{
temp=ch[i];
posite=pos[(int)temp];
for(j=leafcode[posite].start+1;j<number;j++)
{
printf("%c",leafcode[posite].bit[j]);
allHc[allhc]=leafcode[posite].bit[j];
allhc++;
}
}
printf("\n\n");
printf(" --------------------------------------------------------------- \n");
printf("\n");
printf(" ★译码的结果如下:");
unhanffman(huffnode);
fclose(fp);
}
2009-03-03
组成原理 数据通路实验
数据通路组成实验
一、实验目的
(1)将双端口通用寄存器组和双端口存储器模块联机;
(2)进一步熟悉计算机的数据通路;
(3)掌握数字逻辑电路中故障的一般规律,以及排除故障的一般原则和方法;
(4)锻炼分析问题与解决问题的能力,在出现故障的情况下,独立分析故障现象,并排除故障。
二、实验电路
2009-12-15
人事管理系统分析报告
人事管理系统分析与概述
【摘要】信息技术为企业的发展提供了机遇,也带来了挑战。如何改良企业内部经营机制,公正、客观、全面、快捷地评估员工的业绩,实现以人为本的经营战略,提高人事管理工作的效率,使人事管理员有更多的精力去做人力资源分析、研究和开发工作,是企业立足发展,开拓未来,领先同行业的关键。本文叙述了一个人事管理系统形成的全过程,包括部分演示。
【关 键 词】RAD、OLE、powerbulid 8.0、sql server 2000
1引言
随着计算机技术、网络技术和信息技术的发展,越来越多地改善着现代人的观念。网络办公自动化系统是计算机技术和网络迅速发展的一个办公应用解决方案,它的主要目的是实现信息交流和信息共享,提供协同工作的手段,提高办公的效率,让人们从繁琐的有纸办公中解脱出来。现在我国的许多的机关单位的人事管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。
基于这种情况,我研究开发了这套人事管理系统,希望这套系统能为学校的人事管理带来更多的方便。
2 系统需求分析及可行性研究
2009-12-15
图书馆管理系统分析报告
系统内部框架及数据字典
1.1 信息分类及相互关系
中国人民大学图书馆信息系统是围绕学校图书馆的各项业务活动而建立的,其中涉及的信息大体上可以分为四类:业务过程信息、读者信息、费用信息和管理信息。其中业务过程信息是指完成业务所产生的过程控制信息,如借阅信息、书刊出入库信息等,都是局部信息;读者信息是指在读者整个在校期间需要在整个系统范围内共享的信息,是基本信息;管理信息是由基本信息和业务过程信息加工得到的,如读者流动情况、书刊平均借阅天数、效率分析等,是派生信息。读者借阅活动和各类信息之间的关系
1.2 贯穿系统的两条信息线
集成各局部系统的重要目标是确保整个系统不随着局部系统的改变而改变,不随着新系统的加入而发生大的变化。找出图书馆信息系统的内在联系,确立好各局部系统之间的接口,是实现这一目标的前提。
贯穿整个图书馆信息系统有两条信息线:读者信息线和费用信息线。以此为框架来构造和集成整个系统。
证件信息包括读者主索引、借阅记录等等;费用信息包括在各个环节发生的各类费用及消耗成本等。
这两条信息线在系统中体现为具体的数据结构,它独立于各局部系统而存在。从整体的、发展的角度来构筑好这一基础框架是本系统数据结构的核心。
2. 各子系统的数据流程图及数据字典
2.1财务管理子系统
功能:负责全馆财务、物资采购及发放、安全保卫及卫生清洁等工作。其中财务管理包括:全馆人员工资、奖金发放及经费管理。
流程: 罚款收据
读者ID 结算数据
罚单 罚 收 财 调
单 据 务 整
工资报表 会计凭证
采购计划预算数据 会计凭证
现金额 财务调整 财务调整
资金
采购资料
批准/不批准
审 批准
/
查 不批准
需配置及初始化的表:
2009-11-30
wpf入门教程 创建你的第一个wpf项目
WPF入门教程系列(一) 创建你的第一个WPF项目
WPF基础知识
快速学习绝不是从零学起的,良好的基础是快速入手的关键,下面先为大家摞列以下自己总结的学习WPF的几点基础知识:
1) C#基础语法知识(或者其他.NET支持的语言):这个是当然的了,虽然WPF是XAML配置的,但是总还是要写代码的,相信各位读者应该也都有这个基础了。
2) HTML语言:虽然WPF是窗体程序但是由于使用的XAML语言,如果以前接触过HTML、XHTML、ASP.NET之路的东西的话会,接受这些标签会很有帮助的,如果以前一直是从事win form开的人来说可能就要适应一下了。
3) 对C#中的代理、事件要做到熟练掌握,在.NET 3.0 版本后有增加了Routed Events,要想日后不糊涂,这个是基础。
4) 有一定的winform或ASP.NET经验,主要是对控件事件的处理要有写了解。
5) 拥有良好的面向对象的思想:思想是语言的升华(本人的OO思想完全是Java中领悟来的)。在WPF中,经常要灵活运用各种继承关系、多态、重载等,因此一定要把基础知识打牢固。
2009-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅