当前位置:文档之家› 回文判断实验二

回文判断实验二

回文判断实验二
回文判断实验二

回文判断实验二

洛阳理工学院实验报告

系别计算机系班级B13053

学号B13053235 姓名李登辉

2

课程名称数据结构实验日期2014.3.28 实验名称栈和队列的基本操作成绩

实验目的:

熟悉掌握栈和队列的特点,掌握与应用栈和队列的基本操作算法,训练和提高结构化程序设计能力及程序调试能力。

实验条件:

计算机一台,Visual C++6.0

实验内容:

1.问题描述

利用栈和队列判断字符串是否为回文。称正读与反读都相同的字符序列为“回文”序列。要求利用栈和队列的基本算法实现判断一个字符串是否为回文。栈和队列的存储结构不限。

2.数据结构类型定义

typedef struct

{

char elem[MAX];

int top;

}SeqStack; 顺序栈

3.模块划分

void InitStack(SeqStack *S):栈初始化模块,

int Push(SeqStack *S,char x,int cnt):入栈操作

int Pop(SeqStack * S,char * x):出栈操作

void InitQuene(SeqQuene *Q):队列初始化

int EnterQuene(SeqQuene *Q,char x,int cnt):入队操作

int DeleteQuene(SeqQuene *Q,char *x,int cnt):出队操作

void main():主函数

4.详细设计

#include

#include

#define MAX 50

#define FALSE 0

#define TURE 1//定义栈

typedef struct

{

char elem[MAX];

int top;

}SeqStack;

//定义循环队列

typedef struct

{

char element[MAX];

int front;

int rear;

}SeqQuene;

//初始化栈

void InitStack(SeqStack *S)

{

S->top = -1;//构造一个空栈

}

//入栈

int Push(SeqStack *S,char x,int cnt)

{

if(S->top == cnt-1)

return(FALSE);

S->top++;

S->elem[S->top] = x;

return(TURE);

}

//出栈

int Pop(SeqStack * S,char * x)

{

if(S->top == -1)

return(FALSE);

else

{

*x = S->elem[S->top];

S->top--;

return(TURE);

}

}

//初始化队列

void InitQuene(SeqQuene *Q)

{

Q->front = Q->rear = 0;

}

//入队

int EnterQuene(SeqQuene *Q,char x,int cnt) {

if((Q->rear+1)%(cnt+1) == Q->front) return(FALSE);

Q->element[Q->rear] = x;

Q->rear = (Q->rear+1)%(cnt+1);

return(TURE);

}

//出队

int DeleteQuene(SeqQuene *Q,char *x,int cnt)

{

if(Q->front == Q->rear)

return(FALSE);

*x = Q->element[Q->front];

Q->front = (Q->front+1)%(cnt+1);

return(TURE);

}

//主函数

void main()

{

int i,cnt,flag;

SeqStack s;

SeqQuene q;

char a[MAX],b[MAX],c[MAX];

flag=0;

printf("请输入由*结束且小于%d的回文序列:\n",MAX);

for(i = 0;i

{

scanf("%c",&a[i]);

if(a[i] == '*')

break;

}

cnt = i;

printf("输入了有%d个字符。\n",cnt);

InitStack(&s);

InitQuene(&q);

for(i = 0;i

{

EnterQuene(&q,a[i],cnt);

Push(&s,a[i],cnt);

}

printf("正序字符串为:\n");

for(i = 0;i

{

DeleteQuene(&q,&b[i],cnt);

printf("%c",b[i]);

}

printf("\n");

printf("逆序字符串为:\n");

for(i = 0;i

{

Pop(&s,&c[i]);

printf("%c",c[i]);

}

printf("\n");

for(i = 0;i

{

if(b[i] == c[i])

flag = 1;

else

{

flag = 0;

break;

}

}

if(flag)

printf("此序列是回文序列!");

else

printf("此序列不是回文序列!");

printf("\n");

}

}

测试数据及结果:

实验总结:读取一个字符,同时存储在顺序栈与链队列之中,直到字符序列的最后一个字符为*停止插入。在程序中设置了一个标志位flag,将输入的序列分别做入栈、出栈、入队、出队操作,若出栈与出队的数据完全一致,则将flag标志为1,否则为零。Flag 为1,则表示该序列是回文序列,否则,为非回文序列。

回文判断教学总结

实验报告 系部计算机系I班级I I学号I I姓名课程名称—数据结构I实验日期实验名称回文判断成绩 实验目的: 掌握栈的基本操作:入栈、出栈等在链式或顺序存储结构上的实现。 实验条件:PC机一台、VC++6.0编译环境 实验内容与算法思想: 内容: 输入一字符串判断其是否为回文。 算法思想: 1. 算法中主要用到的函数 ①void mai n() //主函数 ②int push_seqstack(Seqstack *s,char x) // 进栈 ③in t pop_seqstack(Seqstack *s) // 出栈 ④int gettop_seqstack(Seqstack *s) 〃取栈顶元素 ⑤int Ishuiwe n( char *s) 〃判断是否是回文 2. 函数之间的调用关系 函数之间的调用关系如图1所示:

图1函数之间的调用关系 运行结果: 运行程序输入一段字符串,运行不同的结果如图2、3所示: 图2 不是回文的判断结果 实验总结: 通过前两次的实验,使我对C语言和数据结构有许多认识。因此,这次实验 在做起来时多少有点思路,但是在实验室当中还是遇到了许多不会的问题,如回文的判断思路、以及函数的调用等等,不过这些问题在老师和同学的帮助下基本完成了这次实验。这次实验让我学到了很多知识,让我对原来所学的又重新复习了一遍,同时还学到了许多其他新知识。 附:源程序: #in clude #in clude #defi ne OK 1 #defi ne ERROR 0 #defi ne Maxsize 100 typedef struct { char elem[Maxsize]; int top; }Seqstack;

R语言判别分析实验报告

R语言判别分析实验报告 班级:应数1201 学号: 姓名:麦琼辉 时间:2014年11月28号 1 实验目的及要求 1)了解判别分析的目的和意义; 2)熟悉R语言中有关判别分析的算法基础。 2 实验设备(环境)及要求 个人计算机一台,装有R语言以及RStudio并且带有MASS包。 3 实验内容 企业财务状况的判别分析 4 实验主要步骤 1)数据管理:实验对21个破产的企业收集它们在前两年的财务数据,对25个 财务良好的企业也收集同一时期的数据。数据涉及四个变量:CF_TD(现金/总债务);NI_TA(净收入/总资产);CA_CL(流动资产/流动债务);CA_NS (流动资产/净销售额),一个分组变量:企业现状(1:非破产企业,2:破产企业)。 2)调入数据:对数据复制,然后在RStudio编辑器中执行如下命令。 case5=read.table(‘clipboard’,head=T) head(case5) 3)Fisher判别效果(等方差,线性判别lda):采用Bayes方式,即先验概率 为样本例数,相关的RStudio程序命令如下所示。 library(MASS) ld=lda(G~.,data=case5);ld #线性判别 ZId=predict(ld) addmargins(table(case5$G,ZId$class)) 4)Fisher判别效果(异方差,非线性判别--二次判别qda):再次采用Bayes 方式,相关的RStudio程序命令如下所示。

library(MASS) qd=qda(G~.,data=case5);qd #二次判别 Zqd=predict(qd) addmargins(table(case5$G ,Zqd$class)) 5 实验结果 表1 线性判别lda 效果 原分类 新分类 1 2 合计 1 24 1 25 2 3 18 21 合计 27 19 46 符合率 91.30% 由表1和表2可知,qda (二次判别---非线性判 别)的效果比lda (一次判别)要好。 6 实验小结 通过本次实验了解了判别分析的目的和意义,并熟悉R 语言中有关判别分析的算法基础。 表2 二次判别qda 效果 原分类 新分类 1 2 合计 1 24 1 25 2 2 19 21 合计 26 20 46 符合率 93.50%

最长回文子串

[转]最长回文子串O(n) 这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文有多长, 这个算法有一个很巧妙的地方,它把奇数的回文串和偶数的回文串统一起来考虑了。这一点一直是在做回文串问题中时比较烦的地方。这个算法还有一个很好的地方就是充分利用了字符匹配的特殊性,避免了大量不必要的重复匹配。 算法大致过程是这样。先在每两个相邻字符中间插入一个分隔符,当然这个分隔符要在原串中没有出现过。一般可以用‘#’分隔。这样就非常巧妙的将奇数长度回文串与偶数长度回文串统一起来考虑了(见下面的一个例子,回文串长度全为奇数了),然后用一个辅助数组P记录以每个字符为中心的最长回文串的信息。P[id]记录的是以字符str[id]为中心的最长回文串,当以str[id]为第一个字符,这个最长回文串向右延伸了P[id]个字符。 原串:waabwswfd 新串:# w # a # a # b # w # s # w # f # d # 辅助数组P: 1 2 1 2 3 2 1 2 1 2 1 4 1 2 1 2 1 2 1 这里有一个很好的性质,P[id]-1就是该回文子串在原串中的长度(包括‘#’)。 (证明: 1,显然l=2*p【i】-1即为新串中以s【i】为中心的最长回文串长度。 2,以s【i】为中心的回文串定以#开头和结尾,则l-1为原串长度的2 倍 证毕) 好,我们继续。现在的关键问题就在于怎么在O(n)时间复杂度内求出P数组了。只要把这个P数组求出来,最长回文子串就可以直接扫一遍得出来了。 由于这个算法是线性从前往后扫的。那么当我们准备求P[i]的时候,i以前的P[j]我们是已经得到了的。我们用mx记在i之前的回文串中,延伸至最右端的位置。同时用id这个变量记下取得这个最优mx时的id值。(注:为了防止字符比较的时候越界,我在这个加了‘#’的字符串之前还加了另一个特殊字符‘$’,故我的新串下标是从1开始的) 好,到这里,我们可以先贴一份代码了。 复制代码 1. void pk() { int i; int mx = 0; int id; for(i=1; i i ) p[i] = MIN( p[2*id-i], mx-i ); else p[i] = 1; for(; str[i+p[i]] == str[i-p[i]]; p[i]++) ; if( p[i] + i > mx ) { mx = p[i] + i; id = i; } } } 代码是不是很短啊,而且相当好写。很方便吧,还记得我上面说的这个算法避免了很多不必要的重复匹配吧。这是什么意思呢,其实这就是一句代码。 if( mx > i) p[i]=MIN( p[2*id-i], mx-i); 就是当前面比较的最远长度mx>i的时候,P[i]有一个最小值。这个算法的核心思想就在这里,为什么P数组满足这样一个性质呢? (下面的部分为图片形式)

回文判断实验二

回文判断实验二

洛阳理工学院实验报告 系别计算机系班级B13053 学号B13053235 姓名李登辉 2 课程名称数据结构实验日期2014.3.28 实验名称栈和队列的基本操作成绩 实验目的: 熟悉掌握栈和队列的特点,掌握与应用栈和队列的基本操作算法,训练和提高结构化程序设计能力及程序调试能力。 实验条件: 计算机一台,Visual C++6.0

实验内容: 1.问题描述 利用栈和队列判断字符串是否为回文。称正读与反读都相同的字符序列为“回文”序列。要求利用栈和队列的基本算法实现判断一个字符串是否为回文。栈和队列的存储结构不限。 2.数据结构类型定义 typedef struct { char elem[MAX]; int top; }SeqStack; 顺序栈 3.模块划分 void InitStack(SeqStack *S):栈初始化模块, int Push(SeqStack *S,char x,int cnt):入栈操作 int Pop(SeqStack * S,char * x):出栈操作 void InitQuene(SeqQuene *Q):队列初始化 int EnterQuene(SeqQuene *Q,char x,int cnt):入队操作 int DeleteQuene(SeqQuene *Q,char *x,int cnt):出队操作 void main():主函数 4.详细设计 #include #include #define MAX 50 #define FALSE 0 #define TURE 1//定义栈 typedef struct { char elem[MAX]; int top; }SeqStack; //定义循环队列 typedef struct { char element[MAX]; int front; int rear; }SeqQuene; //初始化栈

R语言判别分析实验报告

R语言判别分析实验报 告 GE GROUP system office room 【GEIHUA16H-GEIHUA GEIHUA8Q8-

R语言判别分析实验报告 班级:应数1201 学号: 姓名:麦琼辉 时间:2014年11月28号 1 实验目的及要求 1)了解判别分析的目的和意义; 2)熟悉R语言中有关判别分析的算法基础。 2 实验设备(环境)及要求 个人计算机一台,装有R语言以及RStudio并且带有MASS包。 3 实验内容 企业财务状况的判别分析 4 实验主要步骤 1)数据管理:实验对21个破产的企业收集它们在前两年的财务数据,对25个财 务良好的企业也收集同一时期的数据。数据涉及四个变量:CF_TD(现金/总债务);NI_TA(净收入/总资产);CA_CL(流动资产/流动债务);CA_NS(流动资产/净销售额),一个分组变量:企业现状(1:非破产企业,2:破产企业)。 2)调入数据:对数据复制,然后在RStudio编辑器中执行如下命令。

case5=read.table(‘clipboard’,head=T) head(case5) 3)Fisher判别效果(等方差,线性判别lda):采用Bayes方式,即先验概率为 样本例数,相关的RStudio程序命令如下所示。 library(MASS) ld=lda(G~.,data=case5);ld #线性判别 ZId=predict(ld) addmargins(table(case5$G,ZId$class)) 4)Fisher判别效果(异方差,非线性判别--二次判别qda):再次采用Bayes方 式,相关的RStudio程序命令如下所示。 library(MASS) qd=qda(G~.,data=case5);qd #二次判别 Zqd=predict(qd) addmargins(table(case5$G,Zqd$class)) 5 实验结果 表1 线性判别lda效果 原分类新分类

回文串实验报告

回文串实验报告 课程名称:数据结构 实验名称:单链表 学生姓名:杜克强 学生学号: 201207092427

实验一回文串的基本操作及其应用 一、实验目的 1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。 2、掌握栈和队列的特点,即后进先出和先进先出的原则。 3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序 存储结构和链式存储结构上的实现。 二、实验内容和要求 [问题描述] 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。 [基本要求] (1)数据从键盘读入; (2)输出要判断的字符串; (3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”,否则输出“No”。 [测试数据] 由学生任意指定。 三、实验步骤 1.需求分析 本演示程序用C语言编写,完成对一个字符串是否是回文字符串的判断 ①输入一个任意的字符串; ②对输入的字符串进行判断是否为回文串;

③输出判断结果; ④测试数据: A.依次输入“abccba”,“asddas”等数据; B.输出判断结果“Yes”,“No”等 四、算法设计 1、算法思想: 把字符串中的字符逐个分别存储到队列和堆栈中,然后逐个出队和出栈并比较出队列的数据元素和退栈的数据元素是否相等,若相等则是会文,否则不是。 2、模块设计 (1)int Palindrome_Test()判断字符序列是否为回文串; (2)Status main()主函数; (3)Status CreatStack(SqStack &S)创建一个栈; (4)Status Push(SqStack &S,SElemType e)入栈; (5)Status Pop(SqStack &S ,SElemType &e)出栈; (6)Status CreatQueue(LinkQueue &Q)创建一个队列; (7)Status EnQueue(LinkQueue &Q,QElemType e)入队; (8)Status DeQueue(LinkQueue &Q,QElemType &e)出队;

R语言判别分析实验报告

R语言判别分析实验报告 The latest revision on November 22, 2020

R语言判别分析实验报告 班级:应数1201 学号: 姓名:麦琼辉 时间:2014年11月28号 1实验目的及要求 1)了解判别分析的目的和意义; 2)熟悉R语言中有关判别分析的算法基础。 2实验设备(环境)及要求 个人计算机一台,装有R语言以及RStudio并且带有MASS包。 3实验内容 企业财务状况的判别分析 4实验主要步骤 1)数据管理:实验对21个破产的企业收集它们在前两年的财务数据,对25 个财务良好的企业也收集同一时期的数据。数据涉及四个变量:CF_TD(现金/总债务);NI_TA(净收入/总资产);CA_CL(流动资产/流动债务); CA_NS(流动资产/净销售额),一个分组变量:企业现状(1:非破产企业,2:破产企业)。 2)调入数据:对数据复制,然后在RStudio编辑器中执行如下命令。 case5=read.table(‘clipboard’,head=T) head(case5) 3)Fisher判别效果(等方差,线性判别lda):采用Bayes方式,即先验概 率为样本例数,相关的RStudio程序命令如下所示。 library(MASS) ld=lda(G~.,data=case5);ld#线性判别 ZId=predict(ld) addmargins(table(case5$G,ZId$class)) 4)Fisher判别效果(异方差,非线性判别--二次判别qda):再次采用

Bayes 方式,相关的RStudio 程序命令如下所示。 library(MASS) qd=qda(G~.,data=case5);qd#二次判别 Zqd=predict(qd) addmargins(table(case5$G,Zqd$class)) 5实验结果 表1线性判别lda 效果 原分类 新分类 12合计 1 24 1 25 2 3 18 21 合计 27 19 46 符合率 91.30% 由表1和表 2可知,qda (二次判别---非线 性判别)的效果比lda (一次判别)要好。 6实验小结 通过本次实验了解了判别分析的目的和意义,并熟悉R 语 言中有关判别分析的算法基础。 表2二次判别qda 效果 原分类 新分类 12合计 1 24 1 25 2 2 19 21 合计 26 20 46 符合率 93.50%

求回文子串 O(n) manacher算法

求回文子串O(n) manacher算法 回文串定义:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。 回文子串,顾名思义,即字符串中满足回文性质的子串。 经常有一些题目围绕回文子串进行讨论,比如HDOJ_3068_最长回文,求最长回文子串的长度。朴素算法是依次以每一个字符为中心向两侧进行扩展,显然这个复杂度是O(N^2)的,关于字符串的题目常用的算法有KMP、后缀数组、AC自动机,这道题目利用扩展KMP 可以解答,其时间复杂度也很快O(N*logN)。但是,今天笔者介绍一个专门针对回文子串的算法,其时间复杂度为O(n),这就是manacher算法。 大家都知道,求回文串时需要判断其奇偶性,也就是求aba和abba的算法略有差距。然而,这个算法做了一个简单的处理,很巧妙地把奇数长度回文串与偶数长度回文串统一考虑,也就是在每个相邻的字符之间插入一个分隔符,串的首尾也要加,当然这个分隔符不能再原串中出现,一般可以用‘#’或者‘$’等字符。例如: 原串:abaab 新串:#a#b#a#a#b# 这样一来,原来的奇数长度回文串还是奇数长度,偶数长度的也变成以‘#’为中心的奇数回文串了。 接下来就是算法的中心思想,用一个辅助数组P记录以每个字符为中心的最长回文半径,也就是P[i]记录以Str[i]字符为中心的最长回文串半径。P[i]最小为1,此时回文串为Str[i]本身。 我们可以对上述例子写出其P数组,如下

新串:# a # b # a # a # b # P[] : 1 2 1 4 1 2 5 2 1 2 1 我们可以证明P[i]-1就是以Str[i]为中心的回文串在原串当中的长度。 证明: 1、显然L=2*P[i]-1即为新串中以Str[i]为中心最长回文串长度。 2、以Str[i]为中心的回文串一定是以#开头和结尾的,例如“#b#b#”或“#b#a#b#”所以L减去最前或者最后的‘#’字符就是原串中长度的二倍,即原串长度为(L-1)/2,化简的P[i]-1。得证。 依次从前往后求得P数组就可以了,这里用到了DP(动态规划)的思想,也就是求P[i]的时候,前面的P[]值已经得到了,我们利用回文串的特殊性质可以进行一个大大的优化。我先把核心代码贴上: for(i=1;ii) { p[i]=Min(p[2*id-i],MaxId-i); } else { p[i]=1; } while(a[i+p[i]]==a[i-p[i]]) { p[i]++; } if(p[i]+i>MaxId) { MaxId=p[i]+i; id=i; } }

数据结构实验二(栈和队列)

实验二栈和队列的基本操作及其应用 一、实验目的 1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。 2、掌握栈和队列的特点,即后进先出和先进先出的原则。 3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序 存储结构和链式存储结构上的实现。 二、实验内容 本次实验提供4个题目,每个题目都标有难度系数,*越多难度越大,学生 可以根据自己的情况任选一个! 题目一:回文判断(*) [问题描述] 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如 “abba”是回文,而“abab”不是回文。 [基本要求] (1)数据从键盘读入; (2)输出要判断的字符串; (3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出 “Yes”,否则输出“No”。 [测试数据] 由学生任意指定。 题目二:顺序栈和循环队列基本操作(*) [基本要求] 1、实现栈的基本操作 六项基本操作的机制是:初始化栈:init_stack(S);判断栈空:stack_empty(S);取栈顶元素:stack_top(S,x);入栈:push_stack(S,x);出栈:pop_stack(S);判断栈满:stack_full(S) 2、实现队列的基本操作 六项基本操作的机制是:初始化队列:init_queue(Q);判断队列是否为空:queue_empty(Q);取队头元素:queue_front(Q,x);入队:enqueue(Q,x);出队:outqueue(Q,x);判断队列是否为满:queue_full(Q) [测试数据]

由学生任意指定。 题目三:商品货架管理(**) [问题描述] 商店货架以栈的方式摆放商品。生产日期越近的越靠近栈底,出货时从栈顶取货。一天营业结束,如果货架不满,则需上货。入货直接将商品摆放到货架上,则会使生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期越近的越靠近栈底。 [基本要求] 设计一个算法,保证每一次上货后始终保持生产日期越近的商品越靠近栈底。 [实现提示] 可以用一个队列和一个临时栈作为周转。 [测试数据] 由学生任意指定。 三、实验前的准备工作 1、掌握栈的逻辑结构和存储结构。 2、熟练掌握栈的出栈、入栈等操作。 3、掌握队列的逻辑结构和存储结构。 4、熟练掌握队列的出队、入队等操作 四、实验报告要求 1、实验报告要按照实验报告格式规范书写。 *2、写出算法设计思路。 3、实验上要写出多批测试数据的运行结果。 4、结合运行结果,对程序进行分析。 题目四:Rails(ACM训练题) Description There is a famous railway station in PopPush City. Country there is incredibly hilly. The station was built in last century. Unfortunately, funds were extremely limited that time. It was possible to establish only a surface track. Moreover, it turned out that the

判别分析实验报告spss

一、实验目的及要求: 1、目的 用SPSS软件实现判别分析及其应用。 2、内容及要求 用SPSS对实验数据利用Fisher判别法和贝叶斯判别法,建立判别函数并判定宿州、广安等13个地级市分别属于哪个管理水平类型。 二、仪器用具: 三、实验方法与步骤: 准备工作:把实验所用数据从Word文档复制到Excel,并进一步导入到SPSS 数据文件中,同时,由于只有当被解释变量是属性变量而解释变量是度量变量时,判别分析才适用,所以将城市管理的7个效率指数变量的变量类型改为“数值(N)”,度量标准改为“度量(S)”,以备接下来的分析。 四、实验结果与数据处理: 表1 组均值的均等性的检验 Wilks 的 Lambda F df1df2Sig. 综合效率标准指数.582264.000 经济效率标准指数.406264.000 结构效率标准指数.954264.218 社会效率标准指数.796264.001 人员效率标准指数.342264.000 发展效率标准指数.308264.000 环境效率标准指数.913264.054 表1是对各组均值是否相等的检验,由该表可以看出,在的显著性水平上我们不能拒绝结构效率标准指数和环境效率标准指数在三组的均值相等的假设,即认为

除了结构效率标准指数和环境效率标准指数外,其余五个标准指数在三组的均值是有显著差异的。 表2 对数行列式 group秩对数行列式 16 26 36 汇聚的组内6 打印的行列式的秩和自然对数是组协方差矩阵的秩和自然对数。 表3 检验结果 箱的 M F近似。 df142 df2 Sig..000 对相等总体协方差矩阵的零假设进行检验。 以上是对各组协方差矩阵是否相等的Box’M检验,表2反映协方差矩阵的秩和行列式的对数值。由行列式的值可以看出,协方差矩阵不是病态矩阵。表3是对各总体协方差阵是否相等的统计检验,由F值及其显著水平,在的显著性水平下拒绝原假设,认为各总体协方差阵不相等。 1)Fisher判别法: 图一

回文(数据结构)

//借助栈和链队列判断序列是否回文 #include #include #define ERROR 0 #define OK 1 #define STACK_INT_SIZE 10 /*存储空间初始分配量*/ #define STACKINCREMENT 5 /*存储空间分配增量*/ typedef char ElemType; /*定义元素的类型*/ typedef struct{ ElemType *base; ElemType *top; int stacksize; /*当前已分配的存储空间*/ }SqStack; typedef struct QNode{ ElemType data; struct QNode *next; }QNode,*Queue; typedef struct{ Queue front; Queue rear; }LinkQueue; int InitStack(SqStack *S){ S->base=(ElemType *)malloc(STACK_INT_SIZE *sizeof(ElemType)); if(!S->base) return ERROR; S->top=S->base; S->stacksize=STACK_INT_SIZE; return OK; }/*InitStack*/ int Push(SqStack *S,ElemType e){ if(S->top-S->base>=S->stacksize){ S->base=(ElemType*)realloc(S->base,(STACK_INT_SIZE+STACKINCREMENT)*sizeof(ElemType)); if(!S->base) return ERROR; S->top=S->base+S->stacksize;S->stacksize=S->stacksize+STACKINCREMENT; } *S->top++=e; return OK; }/*Push*/ int Pop(SqStack *S,ElemType &e){

回文判断实验报告

回文判断实验报告 一.实验题目:回文判断 二.实验目的: 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。 三.实验需求: 1.数据从键盘读入; 2.输出要判断的字符串; 3.利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“Yes”否则输出“No” 四.主要实现函数 (1)建立顺序栈存储结构 typedef struct { } (2)初始化 int initstack(Sqstack &s,int maxsize) (3)入栈 int enstack(Sqstack &s, char e) (4)出栈 int popstack(Sqstack &s,char &e) (5)判断是否为回文 int main() { int r; //用于判断是否为回文 Sqstack L,Q; //定义两个栈

initstack(L,20); initstack(Q,20); int l; //用于记录输入字符的长度cout<<"请输入字符串长度"; cin>>l; if(l<=0)exit(1); cout<<"输入字符"<>p; enstack(L,p); //入栈 L } cout< using namespace std; typedef char SElemType; typedef struct { SElemType *base; SElemType *top; int stacksize;

用循环语句打印一个乘法表判断回文数(逆序排列后得到数和原数相同)

福建农林大学实验报告 实验一 Java开发环境 一、实验目的: 1、掌握分支、循环语句的使用。 二、实验内容: 1、用循环语句打印一个99乘法表。 2、判断回文数(逆序排列后得到的数和原数相同)。 三、实验要求: 1、打印的乘法表应该呈现阶梯状。 2、给定一个1-99999之间的整型数,程序可以判断它的位数,并判断是否是回文数。 3、实验报告给出完整代码。 四、算法描述及实验步骤 先定义两个变量i和j然后初始化值为1,由于题目的条件,所以i<+9而j<=I,然后经过输出语句System.out.print (j+"*"+i+"="+i*j+" ");可将i和j值进行相乘,最后用输出语句改变下格式就可以了。 五、调试过程及实验结果 1 算出来的并没有按照表格输出 改System.out.println (" "); 中println后的ln就可以改变换行了, 2

六、总结 通过第一小题的练习,让我加强了对for循环语句和输出函数的使用。 经过第二小题的练习,我懂得了什么是回文数,并且用.reverse(),反转字符串来反转,然后将反转后的数字和之前的数字进行比较。 七、附录(代码): 9*9乘法表: class Test{ public static void main (String[] args) { for(int i=1;i<=9;i++) { for(int j=1;j<=i;j++) { System.out.print (j+"*"+i+"="+i*j+" "); } System.out.println (" "); } } } 判断回文数: class Test { public static void main(String[] args) { String str = "1234554321"; boolean huiwenshu = new StringBuilder(str).reverse().toString().equals(str); System.out.println (str); System.out.println(huiwenshu); } }

多元统计分析实验报告判别分析

页眉 2015——2016学年第一学期 实验报告 课程名称:多元统计分析 实验项目:判别分析 设计性□验证性□实验类别:综合性□√专业班级:

姓名:学号: 实验地点:统计与金融创新实验室(新60801) 实验时间: 指导教师:曹老师成绩: 数学与统计学院实验中心制页脚 一、实验目的统计《spss 让学生掌握判别分析的基本步骤和分析方法;学习 的内容,掌握一般判别分析与逐分析从入门到精通》P307-P320步判别分析方法。 二、实验内容,掌》应用《胃病患者的测量数据》和《表征企业类型的数据.sav、1统计分析从spss握一般判别分析与逐步判别分析方法。数据来源于《章的数据。入门到精通数据文件》第12的数据进行分析,数据见文件《何晓群多元统计2、参考教材例4-2 》中的例4-2new。)分析(数据三、实验方案(程序设计说明) 四、程序运行结果1. (1) 分析案例处理摘要未加权案例N 百分比 93.3 14 有效 6.7 缺失或越界组代码1 .0 至少一个缺失判别变量0 .0

排除的缺失或越界组代码还有至少0 一个缺失判别变量6.7 合计1 100.0 15 合计 组统计量 1 N(列表状态)类别均值标准差有效的未加权的已加权的5.000 188.60 57.138 5 铜蓝蛋白5.000 16.502 5 150.40 蓝色反应胃癌患者5.000 5.933 5 尿吲哚乙酸13.80 5.000 13.323 5 中性琉化物20.00 4.000 47.500 4 铜蓝蛋白156.25 4.000 118.75 14.104 4 蓝色反应萎缩性胃炎4.000 1.732 4 尿吲哚乙酸7.50 4.000 8.386 4 中性琉化物14.50 5.000 33.801 5 铜蓝蛋白151.00 5.000 13.012 5 蓝色反应121.40 其他胃病5.000 1.871 5 尿吲哚乙酸5.00 5.000 5 中性琉化物8.00 7.314 14.000 14 铜蓝蛋白165.93 46.787 14.000 14 蓝色反应131.00 20.203 合计14.000 14 8.86 5.318 尿吲哚乙酸14.000 10.726 14

判别分析实验报告

数学实验报告判别分析

一、实验目的 要求熟练掌握运用SPSS软件实现判别分析。 二、实验内容 已知某研究对象分为3类,每个样品考察4项指标,各类观测的样品数分别为7,4,6;另外还有2个待判样品分别为 第一个样品: =-=-== 18,214,316,456 x x x x 第二个样品: ==-== 192,217,318,4 3.0 x x x x 运用SPSS软件对实验数据进行分析并判断两个样品的分组。 三、实验步骤及结论 1.SPSS数据分析软件中打开实验数据,并将两个待检验样本键入,作为样本18和样本19。 2.实验分析步骤为: 分析→分类→判别分析 3.得到实验结果如下: (1)由表1,对相等总体协方差矩阵的零假设进行检验,Sig值为0.022<0.05,则拒绝原假设,则各分类间协方差矩阵相等。 由表2可得,函数1所对应的特征值贡献率已达到99.6%,说明样本数据均向此方向投影就可得到效果很高的分类,故只取函数1作为投影函数,舍去函数2不做分析。 表3为典型判别式函数的Wilks的Lambda检验,此检验中函数1的Wilks Lambda检验sig值为0.022<0.05,则拒绝原假设,说明函数1判别显著。

表4为求得的各典型函数判别式函数系数,由此表可以求得具体函数,得y=9.240+0.010x1+0.543x2+0.047x3-0.068x4。 由表5给出的组质心处的函数值,可以得到函数1的置信坐标为(-1.846,0.616,1.744)。

(2)关于两个待判样本的分组方法: 将样本1的因变量数据代入方程 y=9.240+0.010x1+0.543x2+0.047x3-0.068x4 求得y1=-1.498,分别减去上表中-1.846,0.616,1.744,取绝对值得0.348,0.882,0.246,则样本1为第1组; 同理可得,y2=1.571,分别减去上表中-1.846,0.616,1.744,取绝对值得 3.417,0.955,0.173,则样本2为第3组。 贝叶斯判别部分如下: 表6 表7为贝叶斯判别分析得到的分类函数系数表,可以得到3个分组各自的函数: y1=-223.305-0.074x1-19.412x2+4.549x3+1.582x4 y2=-199.884-0.045x1-18.097x2+4.661x3+1.414x4 y3=-190.041-0.040x1-17.457x2+4.720x3+1.377x4 将两组样本数据分别代入3个方程: 代入样本1得 y1=410.431,y2=207.594,y3=207.309 代入样本2得 y1=186.519,y2=191.765,y3=192.139

用栈和队列判断回文

实验二栈和队列 一、实验目的 1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。 2、掌握栈和队列的特点,即后进先出和先进先出的原则。 3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队 等运算在顺序存储结构和链式存储结构上的实现。 二、实验内容 1.请简述栈的基本特性和栈的几种基本操作的机制 栈是限定仅在表位进行插入或删除操作的线性表,栈的修改是按照后进先出的原则进行的,根据这种特性进行回文判断。 [问题描述] 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。 [基本要求] (1)数据从键盘读入; (2)输出要判断的字符串; (3)利用栈的基本操作对给定的字符串判断其是否是回文,若是则输出“该字符串是回文”,否则输出“该字符串不是回文”。 [测试数据] 由学生任意指定。 2.设计简单的程序实现用栈判断回文 #include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10

typedef struct{ char *base; char *top; int stacksize; }SqStack; void InitStack(SqStack &S){ S.base =(char *)malloc(STACK_INIT_SIZE * sizeof(char)); if(!S.base)exit(0); S.top = S.base; S.stacksize = STACK_INIT_SIZE; } void Push(SqStack &S,char e){ if(S.top - S.base >= S.stacksize){ S.base = (char *) realloc (S.base,(S.stacksize + STACKINCREMENT) * sizeof(char)); if(!S.base) printf("存储分配失败!"); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ = e; } char Pop(SqStack &S,char &e){ if(S.top == S.base) { printf("该栈为空!"); printf("\n"); e = 'E'; }else{ e = *--S.top;

多元统计分析——判别分析实验报告

学生实验报告 学院: 课程名称:多元统计分析 专业班级: 姓名: 学号:

学生实验报告 一、实验目的及要求: 1、目的 熟悉SPSS统计软件,学会在统计软件SPSS中进行判别分析,并通过判别分析输出结果图,再进行判别分析。根据输出结果,把未分组的判给距离相近那组。 2、内容及要求 ⑴熟悉spss软件有关判别分析的操作; ⑵利用spss软件分析判别分析课后练习第六题,判定待判组的类别归属; ⑶输出并解释分析结果并完成实验报告。 二、仪器用具:

三、实验方法与步骤: 步骤一:将数据复制到SPSS中,经过编辑后形成某地区人口死亡状况的数据集,如图1所示。 图1 某地区人口死亡状况的观测数据

步骤二:根据要求,采用系统聚类方法,在SPSS中选择分析-分类-判别分析如图2。 图2 判别分析 步骤三:进行判别分析,将X1到X6全部选入自变量中,分组变量为组别,如图3。 图3 判别分析选项框 步骤四:在统计量选项框中选择均值,单变量,Box’s M 等,如图4;分类选项中勾选个案、摘要等,如图5。

图4 统计量选项框 图5 分类选项框

四、实验结果与数据处理: 1.检验各组的描述统计量和对各组均值是否相等: 表1 Analysis Case Processing Summary Unweighted Cases N Percent Valid 15 78.9 Excluded Missing or out-of-range group codes 4 21.1 At least one missing discriminating variable 0 .0 Both missing or out-of-range group codes and at least one missing discriminating variable 0 .0 Total 4 21.1 Total 19 100.0 表1 表2平上拒绝X4与X5在三组的均值相等的假设,即认为变量X4、X5在三组的均值是有显著差异的。 2. 典型判别函数: 表4 Wilks' Lambda Test of Function(s) Wilks' Lambda Chi-square df Sig. dimensio n0 1 through 2 .010 43.948 12 .000 2 .591 4.999 5 .416

用栈和队列判断回文

用栈和队列判断回文 栈和队列实验二 一、实验目的 1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。 2、掌握栈和队列的特点,即后进先出和先进先出的原则。 3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队 等运算在顺序存储结构和链式存储结构上的实现。二、实验内容 1(请简述栈的基本特性和栈的几种基本操作的机制 栈是限定仅在表位进行插入或删除操作的线性表,栈的修改是按照后进先出的原则进行的,根据这种特性进行回文判断。 [问题描述] 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“abab”不是回文。[基本要求] (1)数据从键盘读入; (2)输出要判断的字符串; (3)利用栈的基本操作对给定的字符串判断其是否是回文, 若是则输出“该字符串是回文”,否则输出“该字符串不是 回文”。 [测试数据] 由学生任意指定。 2(设计简单的程序实现用栈判断回文 #include #include

#include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef struct{ char *base; char *top; int stacksize; 1 }SqStack; void InitStack(SqStack &S){ S.base =(char *)malloc(STACK_INIT_SIZE * sizeof(char)); if(!S.base)exit(0); S.top = S.base; S.stacksize = STACK_INIT_SIZE;} void Push(SqStack &S,char e){ if(S.top - S.base >= S.stacksize){ S.base = (char *) realloc (S.base,(S.stacksize + STACKINCREMENT) * sizeof(char)); if(!S.base) printf("存储分配失败~"); S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ = e; }

相关主题
文本预览
相关文档 最新文档