当前位置: 首页 > news >正文

郑州做网站经开区阿里巴巴的网站应该怎么做

郑州做网站经开区,阿里巴巴的网站应该怎么做,仿卢松松博客网站源码,龙岩搜索引擎推广题目 2990:符号三角形 总时间限制: 1000ms 内存限制: 65536kB 描述 符号三角形的第1行有n个由“”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”“,2个异号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”…

题目

2990:符号三角形
总时间限制: 1000ms 内存限制: 65536kB
描述
符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同。

n=7时的1个符号三角形如下:

输入
每行1个正整数n<=24,n=0退出.
输出
n和符号三角形的个数.
样例输入
15
16
19
20
0
样例输出
15 1896
16 5160
19 32757
20 59984

理解

字符串由±符号组成,两两异或运算(±=-,++=+,–=+)得到少一个字符的下一行,一直到一行只有一个字符。
问,最后字符三角形±号数量相同的情况有几种。
1.枚举
3位时加的情况有
+++=000=0
+±=001=1
±+=010=2
±-=011=3
-++=100=4
-±=101=5
–+=110=6
—=111=7
就是0到7对应的二进制,用异或运算得到所有行符号。
3+2+1=6,是偶数,有可能有±符号的数量相同的字符三角形。
但是5+4+3+2+1=15,奇数就不可能±号数相同。
负号或加号数等于3+2+1=6的一半,就是一样。
或者3*(3+1)/4=3也可以。

代码

#include <bits/stdc++.h>
using namespace std;
int x,l,r;
bool k[25][25];
void view(int n,int d){
cout<<d<<“长”<<n<<endl;
for(int i=1;i<=n;i++){
for(int j=1;j<=n-i+1;j++)cout<<k[i][j]<<" “;
cout<<endl;
}
}
int setk(int n,int d){
int he=0;//正号或负号数
for(int i=n;i>=1&&d;i–){//转换成对应二进制
k[1][i]=d%2;//如果是1是就是正号或符号
he+=k[1][i];
d/=2;
}
for(int i=2;i<=n;i++)//第二行开始
for(int j=1;j<=n-i+1;j++){
k[i][j]=k[i-1][j]^k[i-1][j+1];//当前行的正负号
he+=k[i][j];
}
return he;//
}
int main(){
freopen(“data.cpp”,“r”,stdin);
while(cin>>x&&x){
memset(k,0,sizeof(k));
r=0;
for(int i=0;i<x;i++)r+=pow(2,i);//二进制几位全是1时对应的十进制数
int he=0,f;
if((x*(x+1)/2)%2!=1)
for(int d=0;d<=r;d++){
//cout<<d<<endl;
f=setk(x,d);
if(f==x*(x+1)/4){//正号或符号的数时三角形的一半就对
//view(x,d);
he++;
}
}
cout<<x<<” "<<he<<endl;
}
return 0;
}

递归(回溯)

把所有可能数转换成对应二进制有些麻烦。可以用递归回溯。
该位置成1,
递归调用,传递正号或负号数,下位在深一层成1,一直到最后一位下一位。
此时没有字符可以成1,计算下几行,如果正号或负号数等于n*(n+1)/4(n个符号)就多个正负号数一样字符三角形。
递归出口是比字符数多两个。
递归后,回到上一层,刚才成1的字符再变回0,就可以凑出所有的二进制数。也达到了枚举的效果。只是不用每次将整数转换成二进制,只多一层就能多个二进制。

递归(回溯)代码

#include <bits/stdc++.h>
using namespace std;
int x,he;
bool k[25][25];
void go(int n,int f){//n是从几位开始,f是正号或负号数
if(f>x*(x+1)/4)return;//超过一半就作废,剪枝
if(n**>x+1**)return;//超过x位2个数是递归出口
for(int i=n;i<=x;i++){//每次遍历当前位到最后一位
k[1][i]=1;//成1
go(i+1,f+k[1][i]);//递归下一位,而且改变符号数
k[1][i]=0;//恢复
}
for(int i=2;i<=x;i++)//二行开始计算剩下的符号
for(int j=1;j<=x-i+1;j++){
k[i][j]=k[i-1][j]^k[i-1][j+1];
f+=k[i][j];
}
if(f==x*(x+1)/4){//全部n位递归后,如果正负号数相等
he++;
}
}
int main(){
//freopen(“data.cpp”,“r”,stdin);
while(cin>>x&&x){
memset(k,0,sizeof(k));
he=0;
if((x*(x+1)/2)%2!=1)go(1,0);
cout<<x<<" "<<he<<endl;
}
return 0;
}

http://www.yayakq.cn/news/317507/

相关文章:

  • 网站开发设计方案书网络运维工程师面试题
  • 怎么能自己创建网站做网站app的工资高吗
  • wordpress 副标题调用福州网站seo
  • 网站建设属于莘县网站定制
  • 网站建设选择服务器快速网站开发课程
  • 黄金网站app下载免费上海松江区网站建设
  • 东莞电子产品网站建设建设银行网站查余额查询
  • 精品在线开发网站建设环境设计专业介绍
  • 宁波网站建设网站开发可以在什么网站做二建题目
  • 泸州市住房和城乡建设厅官方网站国家建筑工程信息平台
  • 表格可以做网站么竞价托管的注意事项
  • 上海建设工程招投标在什么网站动画专业学什么
  • 网站搜索功能如何实现企业网站如何去做优化
  • 营销型网站建设五大内容wordpress 纯静态插件
  • 佛山网站优化推广方案网站建设和使用现状
  • 动漫网站建设赚钱吗母婴网站开发
  • 网站建设花钱少静态网站开发试验报告
  • 遵义做手机网站建设wordpress 500错误解决
  • 专业的网站建设建站63年来第一次闭站?北京站辟谣
  • 化学试剂网站建设新手怎么开婚庆公司
  • 湛江建站网络公司wordpress swf插件
  • 网站栏目怎么做301定向赣州网站设计哪家强
  • 厦门网站快速排名优化男性早些泄吃什么药可以根治
  • 网页设计工具一般有哪几种建站之星网站 seo优化
  • 家居网站建设哪家好网站设计制作价钱低
  • 营销型网站建设公司哪里有wordpress换轮播图的
  • 没有公众号建微信网站网站模板代码怎么写
  • 浙江省建设通网站湖南厦门网站优化
  • 简要描述创建商务站点的商务WordPress如何加代码
  • 网站建设 技术团队廊坊学校网站建设