时间限制: 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分,然后就用这个暴力打了个表,然后就过了。

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define MAXN 2500
  6. using namespace std;
  7. int n,sum,ans;
  8. int map[MAXN][MAXN];
  9. int judgenum(){
  10. int bns=,k;
  11. for(int i=;i<=n;i++){
  12. for(int j=;j<=n-i+;j++){
  13. if(map[i-][j]!=map[i-][j+]) map[i][j]=,bns++;
  14. else if(map[i-][j]==map[i-][j+]) map[i][j]=;
  15. }
  16. }
  17. for(int i=;i<=n;i++) if(map[][i]==) bns++;
  18. if(bns==sum-bns) return ;
  19. else return ;
  20. }
  21. void dfs(int now,int num1,int num2){
  22. if(now==n+){
  23. if(judgenum()) ans++;
  24. return ;
  25. }
  26. map[][now]=;dfs(now+,num1+,num2);map[][now]=-;
  27. map[][now]=;dfs(now+,num1,num2+);map[][now]=-;
  28. }
  29. int main(){
  30. scanf("%d",&n);
  31. for(int i=;i<=n;i++) sum+=i;
  32. if(sum%!=){ cout<<"-1";return ; }
  33. memset(map,-,sizeof(map));
  34. dfs(,,);
  35. cout<<ans;
  36. }
  37. /*
  38. - + + - + + +
  39. - + - - + +
  40. - - + - +
  41. + - - -
  42. - + +
  43. - +
  44. -
  45. */

70分暴力

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define MAXN 2500
  6. using namespace std;
  7. int n,sum,ans;
  8. int map[MAXN][MAXN];
  9. int anss[]={,-,-,,,-,-,,,-,-,,,-,-,,,-,-,,,-,-,,};
  10. int judgenum(){
  11. int bns=,k;
  12. for(int i=;i<=n;i++){
  13. for(int j=;j<=n-i+;j++){
  14. if(map[i-][j]!=map[i-][j+]) map[i][j]=,bns++;
  15. else if(map[i-][j]==map[i-][j+]) map[i][j]=;
  16. }
  17. }
  18. for(int i=;i<=n;i++) if(map[][i]==) bns++;
  19. if(bns==sum-bns) return ;
  20. else return ;
  21. }
  22. void dfs(int now){
  23. if(now==n+){
  24. if(judgenum()) ans++;
  25. return ;
  26. }
  27. map[][now]=;dfs(now+);map[][now]=-;
  28. map[][now]=;dfs(now+);map[][now]=-;
  29. }
  30. int main(){
  31. scanf("%d",&n);
  32. for(int i=;i<=n;i++) sum+=i;
  33. if(sum%!=){ cout<<"-1";return ; }
  34. cout<<anss[n];
  35. /*for(n=1;n<=24;n++){
  36. memset(map,-1,sizeof(map));
  37. dfs(1);if(ans==0){ cout<<"-1,";sum=0;continue; }
  38. cout<<ans<<",";
  39. ans=0;sum=0;
  40. }*/
  41. }
  42. /*
  43. - + + - + + +
  44. - + - - + +
  45. - - + - +
  46. + - - -
  47. - + +
  48. - +
  49. -
  50. */

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. 苹果树(线段树+Dfs序)

    1228 苹果树  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 在卡卡的房子外面,有一棵苹果树.每年的春天,树上总 ...

  2. Linex系统 配置php服务器

    此文是可以参考 楼主也不是系统管理员只是迫不得已所以自己才找的  大家可以参考 .... ..... 安装apache 安装mysql 安装PHP 测试服务器 php -v 查询php的版本 就这些了 ...

  3. [Apple开发者帐户帮助]七、注册设备(2)注册多个设备

    如果您有许多测试设备,则可以创建包含设备名称和设备ID的文件,并将整个文件上载到开发人员帐户.您的开发人员帐户支持以下两种文件格式:具有.deviceids文件扩展名和纯文本文件的属性列表文件.您选择 ...

  4. vscode----vue中HTML代码tab键自动补全

    1.在vscode中插件下载并重新加载HTML Snippets 2.settings.json中配置files.associations对象. 找到setting.json文件:文件 --> ...

  5. Scala-基础-变量与常量

    import junit.framework.TestCase import org.junit.Test //变量 //var 代表变量 //val 代表常量 //关键字 class,extends ...

  6. 【RTTI】java Class类详解

    RTTI (Run-Time Type Information)运行时类信息 Java的Class类是java反射机制的基础,通过Class类我们可以获得关于一个类的相关信息,下面我们来了解一下有关j ...

  7. 一,前端---关于微信小程序遇到的wx.request({})问题

    域名请求错误问题 当我们在编写小程序,要发送请求时,wx.request({})时或许会遇到如下的问题: 一:这是因为微信小程序的开发中,域名只能是https方式请求,所以我们必须在小程序微信公众平台 ...

  8. Lazarus Reading XML- with TXMLDocument and TDOMNode

    这里读取'HistoryPath' ,'TracePath' 元素下的‘value’属性使用的是 var xmlCfg: TXMLDocument; .... function ReadXMLCFG: ...

  9. Python 之列表操作

    # len(list)列表元素个数 # max(list)返回列表元素最大值 # min(list)返回列表元素最小值 # list(seq)将元组转换为列表 # list.append(obj)在列 ...

  10. C语言数据结构链栈(创建、入栈、出栈、取栈顶元素、遍历链栈中的元素)

    /**创建链栈*创建一个top指针代表head指针*采用链式存储结构*采用头插法创建链表*操作 创建 出栈 入栈 取栈顶元素*创建数据域的结构体*创建数据域的名称指针*使用随机函数对数据域的编号进行赋 ...