您好,欢迎访问三七文档
当前位置:首页 > 幼儿/小学教育 > 小学教育 > 下图是由14个“+”和14个“-”组成的符号三角形。
宁夏师范学院数学与计算机科学学院《算法设计与分析》实验报告实验序号:实验项目名称:贪心算法应用学号06姓名赵正平专业、班10计本班实验地点321指导教师马涛时间2013-5-30一、实验目的与要求(1)、熟悉贪心算法和回溯算法的区别;(2)、掌握符号三角形问题的算法;(3)、初步掌握回溯算法;二、实验设备(环境)及要求1、环境要求:硬件:PC(PII以上,128M以上内存)、因特网接入;软件:WindowsXP操作系统、Office2003、多媒体播放软件。三、实验内容与步骤下面都是“-”。下图是由14个“+”和14个“-”组成的符号三角形。2个同号下面都是“+”,2个异号下面都是“-”。++-+-+++----+-+++--++--+---+在一般情况下,符号三角形的第一行有n个符号。符号三角形问题要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同。四、实验结果与数据处理#includeiostreamusingnamespacestd;typedefunsignedcharuchar;intsum;uchar**p;//符号存储空间;//表示满足要求的三角形个数charch[2]={'+','-'};intn;//第一行符号总数inthalf;intcount;//用来计算'-'的个数voidBackTrace(intt){if(tn){sum++;cout第sum个三角形:endl;for(inti=1;i=n;i++){for(intj=1;ji;j++)cout;for(j=1;j=n-i+1;j++)coutch[p[i][j]];coutendl;}}else{for(inti=0;i=1;i++){p[1][t]=i;//确定第一行第t个的值;count+=i;//用来计算'-'的个数;for(intj=2;j=t;j++){p[j][t-j+1]=p[j-1][t-j+1]^p[j-1][t-j+2];//第一行大于等于2时确定后面从第2行开始增加的一count+=p[j][t-j+1];//列中符号,计算'-'个数;}if(count=half&&(t*(t+1)/2-count)=half)//约束条件;{BackTrace(t+1);}for(j=2;j=t;j++)//回溯,判断另一种符号情况;{count-=p[j][t-j+1];}count-=p[1][t];}}}intmain(){cout请输入第一行符号的个数:;cinn;count=0;sum=0;half=n*(n+1)/2;if(half%2==0){half=half/2;p=newuchar*[n+1];for(inti=0;i=n;i++){p[i]=newuchar[n+1];memset(p[i],0,sizeof(uchar)*(n+1));}BackTrace(1);for(i=0;i=n;i++){delete[]p[i];}delete[]p;cout满足要求的三角形符号共有:sum个;}else{cout不存在这样的三角形符号!;}return0;}五、分析与讨论六、教师评语。签名:日期:年月日成绩
本文标题:下图是由14个“+”和14个“-”组成的符号三角形。
链接地址:https://www.777doc.com/doc-5790459 .html