张书涵_符号三角形问题
更新时间:2023-06-05 11:17:01 阅读量: 实用文档 文档下载
- 李天泽张书涵推荐度:
- 相关推荐
关于符号三角形数与n的关系的研究与实现
云南师范大学 计算机应用技术 张书涵
1 问题描述
在一般情况下,符号三角形的第一行有n个符号。符号三角形问题要求对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同。
例如图1:由14个“+”和14个“-”组成的符号三角形。2个同号下面都是“+”,2个异号下面都是“-” - + - + + + 。 +
+ - - - - +
- + + + -
- + + - - + - - - +
图1 符号三角形
本文就是计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同,并且探讨两种符号数相同的不同符号三角形的个数与n的关系。
2 问题分析
用n元组x[1:n]表示符号三角形的第一行。X[i]=1表示第一行第i个符号为“+”, X[i]=0表示第一行第i个符号为“-”。可行性约束函数为,当前符号三角形所包含的“+”个数与“-”个数均不超过n*(n+1)/4 。
容易看出,第1行n个符号的数值不同,将直接导致符号三角形的数值F(n)不同。显然,符号三角形的个数F(n)是随着n的变化而变化。那么,得知F(n)与n必然存在一种关系。其次,一个符号三角形有n(n+1)/2个符号,显然这个公式的分子n,n+1中必有一个为偶数。
记G(n)为一个符号三角形所包含的符号数,假定n为偶数。
n
则上述的公式可改写成:G n n 1 。而且n/2必须再次为偶数,不然
2
就不满足条件:符号三角形的符号数G(n)所含的“+”和“—”的个数相同。所以,n必然是4的倍数,即n=4k,其中k=1,2,3,······。
根据上面的论述,易知当公式的分子n,n+1中有且只有一个为4的倍数,此探讨才有意义,并且研究的条件再次收缩。
3 问题解决
用穷举法列出n和符号数以及符号三角形数F(n)的映射表,如表1所示。
表1 n和符号数以及符号三角形数F(n)的映射表
根据穷举的结果我们也可以看出,当n=4i或n=4i-1(i=1,2,3,4…)时存在符号三角形,当n=4i-2或4i-3时不存在符号三角数。
4 运行结果
5 总结
通过上述的分析,基本上理解了回溯算法。当n=4i或n=4i-1(i=1,2,3,4…)时存在符号三角形,当n=4i-2或4i-3时不存在符号三角数。但是运用现有的技术很难得到F(n)关于n的精确表达式。所以,这个问题还有待进一步研究。
附录:
程序代码:
#include"iostream" using namespace std;
typedef unsigned char uchar;
char cc[2]={'+','-'}; //便于输出
int n, //第一行符号总数 half, //全部符号总数一半 counter; //1计数,即“-”号计数
uchar **p; //符号存储空间
long sum; //符合条件的三角形计数 //t,第一行第t个符号 void Backtrace(int t) {
int i, j; if( t > n )
{//符号填充完毕 sum++; //打印符号
cout << "第" << sum << "个:\n"; for(i=1; i<=n; ++i) {
for(j=1; j<i; ++j) {
cout << " "; }
for(j=1; j<=n-i+1; ++j) {
cout << cc[ p[i][j] ] << " "; }
cout << "\n"; } } else
{ for(i=0; i<2; ++i) {
p[1][t] = i; //第一行第t个符号 counter += i; //“-”号统计
for(j=2; j<=t; ++j) //当第一行符号>=2时,可以运算出下面行的某些符号 {
p[j][t-j+1] = p[j-1][t-j+1]^p[j-1][t-j+2];//通过异或运算下行符号 counter += p[j][t-j+1]; }
if( (counter <= half) && ( t*(t+1)/2 - counter <= half) )
{//若符号统计未超过半数,并且另一种符号也未超过半数 Backtrace(t+1); //在第一行增加下一个符号
} //回溯,判断另一种符号情况 for(j=2; j<=t; ++j) {
counter -= p[j][t-j+1]; }
counter -= i; } } }
int main() {
cout << "请输入第一行符号个数n:"; cin >> n; counter = 0; sum = 0;
half = n*(n+1)/2; int i=0;
if( half%2 == 0 )
{//总数须为偶数,若为奇数则无解 half /= 2;
p = new uchar *[n+1];
for(i=0; i<=n; ++i)
{
p[i] = new uchar[n+1];
memset(p[i], 0, sizeof(uchar)*(n+1)); }
Backtrace(1); for(i=0; i<=n; ++i) {
delete[] p[i]; }
delete[] p; }
cout << "\n总共 " << sum << " 个"<< endl; return 0; }
正在阅读:
张书涵_符号三角形问题06-05
北京邮电大学 学科讲座 阶段作业(一)01-18
《中等职业学校学生公约》签署践行启动仪式方案、主持稿、倡议书、承诺书、新闻稿09-13
流体力学第二章习题课12-18
管理案例分析模拟试卷二06-06
人身检查练习题03-03
matlab上机作业03-11
描写人物外貌的词语06-02
2018—2019学年度上学期五年级语文第四单元练习题03-16
个人博客系统毕业设计论文683140905-31
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 张书
- 三角形
- 符号
- 问题
- 数字电子技术(模拟试题1)
- 第9章 CSS层叠样式表的应用
- 汽车发动机水泵项目可行性研究报告
- 不同成土母质条件下土壤养分空间变异研究
- 房地产公司员工转正申请表
- 小型汽油发动机富氧燃烧缸内过程实验研究
- 2012毕业顶岗实习工作手册
- 全等三角形复习题1
- 2009年网络教育计算机基础样题及答案
- 对新课标下信息技术课程必修模块的一些思考
- 2012-36开展“安康杯”竞赛活动的方案
- 反腐倡廉名言警句
- 2016佛山国家公务员考试申论热点:导游小费合法化
- 昆明国际旅游城市建设相关调查
- 马尔代夫美露丽芙岛攻略
- 工程质量创优计划书.1
- 全面质量管理 案例分析
- 数据结构试题及答案
- 考研政治高分完美复习攻略 中公考研
- 河南信阳市2011届高三第一次调研考试(历史)