时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 
 
 
题目描述 Description

如下图是由14个“+”和14个“-”组成的符号三角形, 2个同号下面都是“+”,2个异号下面都是“-”
- + + - + + +  
 - + - - + +  
  - - + - +  
   + - - -  
    - + +  
     - +  
      -

输入描述 Input Description

一个数n,表示符号三角形的第一行有n个符号

输出描述 Output Description

对于给定的n,计算有多少个不同的符号三角形,使其所含的“+”和“-”的个数相同(严禁打表!!!!!)

若不存在方案,输出-1

样例输入 Sample Input

4

样例输出 Sample Output

6

数据范围及提示 Data Size & Hint

对于90%的数据,n<=24;
对于另外10%的数据,请注意特殊情况。

分类标签 Tags 点此展开

思路:写了个搜索,发现只能卡到70分,然后就用这个暴力打了个表,然后就过了。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 2500
using namespace std;
int n,sum,ans;
int map[MAXN][MAXN];
int judgenum(){
int bns=,k;
for(int i=;i<=n;i++){
for(int j=;j<=n-i+;j++){
if(map[i-][j]!=map[i-][j+]) map[i][j]=,bns++;
else if(map[i-][j]==map[i-][j+]) map[i][j]=;
}
}
for(int i=;i<=n;i++) if(map[][i]==) bns++;
if(bns==sum-bns) return ;
else return ;
}
void dfs(int now,int num1,int num2){
if(now==n+){
if(judgenum()) ans++;
return ;
}
map[][now]=;dfs(now+,num1+,num2);map[][now]=-;
map[][now]=;dfs(now+,num1,num2+);map[][now]=-;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) sum+=i;
if(sum%!=){ cout<<"-1";return ; }
memset(map,-,sizeof(map));
dfs(,,);
cout<<ans;
}
/*
- + + - + + +
- + - - + +
- - + - +
+ - - -
- + +
- +
-
*/

70分暴力

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 2500
using namespace std;
int n,sum,ans;
int map[MAXN][MAXN];
int anss[]={,-,-,,,-,-,,,-,-,,,-,-,,,-,-,,,-,-,,};
int judgenum(){
int bns=,k;
for(int i=;i<=n;i++){
for(int j=;j<=n-i+;j++){
if(map[i-][j]!=map[i-][j+]) map[i][j]=,bns++;
else if(map[i-][j]==map[i-][j+]) map[i][j]=;
}
}
for(int i=;i<=n;i++) if(map[][i]==) bns++;
if(bns==sum-bns) return ;
else return ;
}
void dfs(int now){
if(now==n+){
if(judgenum()) ans++;
return ;
}
map[][now]=;dfs(now+);map[][now]=-;
map[][now]=;dfs(now+);map[][now]=-;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++) sum+=i;
if(sum%!=){ cout<<"-1";return ; }
cout<<anss[n];
/*for(n=1;n<=24;n++){
memset(map,-1,sizeof(map));
dfs(1);if(ans==0){ cout<<"-1,";sum=0;continue; }
cout<<ans<<",";
ans=0;sum=0;
}*/
}
/*
- + + - + + +
- + - - + +
- - + - +
+ - - -
- + +
- +
-
*/

code vs 3376 符号三角形的更多相关文章

  1. OpenJudge 2990:符号三角形 解析报告

    2990:符号三角形 总时间限制:  1000ms       内存限制:  65536kB 描述 符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“ ...

  2. 符号三角形——F

    F. 符号三角形 Time Limit: 1000ms Memory Limit: 32768KB 64-bit integer IO format:      Java class name: 符号 ...

  3. 符号三角形(hdu 2510 搜索+打表)

    符号三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. 符号三角形_hdu_2510(深搜).java

    http://acm.hdu.edu.cn/showproblem.php?pid=2510 Time Limit: 2000/1000 MS (Java/Others)    Memory Limi ...

  5. hdu 2510 符号三角形 (DFS+打表)

    符号三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. 【a502】符号三角形问题

    Time Limit: 1 second Memory Limit: 32 MB [问题描述] 在一般情况下,符号三角形的第一行有n个符号.按照2个同号的下面是"+"号,2个异号的 ...

  7. 【HDOJ】2510 符号三角形

    暴力打表. #include <cstdio> ]={,,,,,,,,,,,,,,,,,,,,,,,,}; int main() { while (scanf("%d" ...

  8. HDU 2510 - 符号三角形

    DFS后打表 #include <iostream> using namespace std; ,,,,,,,,,,,,,,,,,,,,,,,,}; int main() { int n; ...

  9. 【CImg】三角形绘制算法实现

    这周的CV基础练习是简单的图形绘制:比如说矩形.三角形和圆心什么的.会发现其实矩形和圆形的实现思路都很直白,矩形只需要确认两个对角坐标就可以了,圆心只需要确认圆心和半径,接着就是简单的遍历各个像素点判 ...

随机推荐

  1. A. Train and Peter

    A. Train and Peter time limit per test 1 second memory limit per test 64 megabytes input standard in ...

  2. [Swift通天遁地]五、高级扩展-(13)图片资源本地化设置:根据不同的语言环境显示不同语言版本图片

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. Unity项目 - 捡苹果 Apple Picker

    项目展示 Github项目地址:Apple Picker 涉及知识 正投视图 3D场景内树与苹果的图层 记录最高分到本地 准备工作 模型制作: 基本模型创建 树叶:sphere 拉伸为椭圆形,绿色材质 ...

  4. Elasticsearch之CURL命令的version控制

    普通关系型数据库使用的是(悲观并发控制(PCC)) 当我们在修改一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修改这一行数据 ES使用的是(乐观并发控制(OCC)) ES不会阻止某一数据 ...

  5. JVM中线程状态转换图

    JVM中线程的状态转换图 线程在一定条件下,状态会发生变化.线程一共有以下几种状态: 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该 ...

  6. [ BZOJ 3445 ] Roadblock

    \(\\\) \(Description\) 给出一张\(N\) 个点\(M\)条边的无向图,选择一条边使其权值翻倍,求操作后比操作前最短路长度增量最大值. \(1\le N\le 250\),\(1 ...

  7. Android项目实战_手机安全卫士home界面

    # 安全卫士主页面# ###1.GridView控件 1.与ListView的使用方式差不多,也要使用数据适配器,通过设置android:numColumns控制显示几列 2.通过指定android: ...

  8. python自动化测试框架(一)

    1.开发环境 名称 版本 系统 windows 7 python版本 2.7.14 IDE pycharm2017 2.大致框架流程 :展示了框架实现的业务流程 3.框架介绍 3.1 ======完善 ...

  9. 初始MongoDB------MongoDB的安装

    MongoDB在Windows的安装是很简单的,无论是安装包还是绿色包,安装出来的都是这些文件   重点是Bin中的东西   特别是前两个的执行文件 mongod进程就是启动MongoDB数据库的进程 ...

  10. 使用jquery animate实现锚点慢慢平滑滚动效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...