HDU-2510(深搜)
符号三角形的 第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异 号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同 。 n=7时的1个符号三角形如下:
+ + - + - + +
+ - - - - +
- + + + -
- + + -
- + -
- -
+
Input
每行1个正整数n <=24,n=0退出.
Output
n和符号三角形的个数.
Sample Input
15 16 19 20 0
Sample Output
15 1896 16 5160 19 32757 20 59984
还行吧 比较水 只是???为何我改这么久 只要找到第一层就可以了
代码:
//package 搜索;
import java.util.Scanner;
import java.lang.Math;
public class Main {static int n,sum;static Scanner sc = new Scanner(System.in);static int total[] = {0,0,0,4,6,0,0,12,40,0,0,171,410,0,0,1896,5160,0,0,32757,59984,0,0,431095,822229};static int tan[][] = new int[30][30];static void DFS(int num,int main,int minus,int floor) //表示层数{if(num > floor){for(int i = 2; i <= floor; i++){for(int j = 1; j <= floor + 1 - i; j++){tan[i][j] = (tan[i - 1][j] ^ tan[i - 1][j + 1]) == 0 ? 1 : 0;if(tan[i][j] == 1)main++;else minus++;}}if(main == minus)sum++;return ;}tan[1][num] = 1;DFS(num + 1,main + 1,minus,floor);//第一个0表示的是'+' 第二个0表示'-'tan[1][num] = 0;DFS(num + 1,main,minus + 1,floor);return ;}static void init(){int cnt = 0;for(int i = 1; i <= 24; i++){cnt += i;if(cnt % 2 == 1){total[i] = 0;continue;}sum = 0;DFS(1,0,0,i);total[i] = sum;}for(int i = 1;i <= 24;i++)System.out.println(i+" " + total[i]);}public static void main(String[]args){
// init();while(sc.hasNext()){n = sc.nextInt();if(n == 0)break;System.out.println(n+" "+total[n]);} }
}
HDU-2510(深搜)相关推荐
- hdu 1312深搜入门题
2019独角兽企业重金招聘Python工程师标准>>> Red and Black Problem Description There is a rectangular room, ...
- HDU 1010 深搜+奇偶剪枝
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1010 贴个资料: http://acm.hdu.edu.cn/forum/read.php?tid=615 ...
- Black And White HDU - 5113 深搜dfs+剪枝
原题 Problem Description In mathematics, the four color theorem, or the four color map theorem, states ...
- hdu 3812 Sea Sky 深搜+剪枝
题目意思: 从sea 找一条道sky 的最长路 题解: 先进行一系列的预处理 1.将所有不重复的字符串先保留下来,然后从小到大排序,这样深搜的时候最先弄出来的答案就是最小的 字母序. 2. 进行深度优 ...
- 深搜、广搜、搜索剪枝
搜索与回溯讲解 文章目录 深搜 方向向量: DFS代码: 题目讲解: 八皇后问题 字符序列 自然数的拆分 广搜 BFS代码: 题目讲解: 瓷砖 关系网络 bfs与dfs的用途与区别 搜索剪枝 可行性剪 ...
- hdu1667The Rotation Game 迭代深搜IDA*
题目链接:http://acm.hdu.edu.cn/data/images/1667-1.jpg 题目是这个棋盘里面摆放着8个1,8个2和8个3,每一步你可以沿着A.B. C.D.E.F.G.H任意 ...
- 算法之路——深搜、广搜(简单搜索)
搜索 通过一定的顺序,枚举每一个数据(经常会通过一些判断条件去掉无意义的数据,即剪枝),找到想要的数据的过程. 深度优先搜索(dfs) 深度优先搜索属于图算法的一种,是一个针对图和树的算法,应为缩写为 ...
- 专题一:简单搜索、深搜、广搜
挑战程序设计竞赛(课后题难题汇总) 1. AOJ 0033 Ball(贪心) #include<cstdio> #include<algorithm> using namesp ...
- Go 分布式学习利器(15) -- Go 实现 深搜和广搜
强化语法,回顾算法. 通过Go语言实现 深度优先搜索 和 广度优先搜索,来查找社交网络中的三度好友关系(三度指的是一个节点到 其相邻节点 到 其相邻节点的节点 ,图递增三层好友关系). 涉及到的Go语 ...
- 水管工游戏 (深搜)
水管工游戏 本题依然是采用搜索,深搜,广搜都可以,本代码采用深搜,此题在搜索时需要增加一些判断条件以及下一步要搜索的位置即可. 代码如下: #include<stdio.h> int a[ ...
最新文章
- mysql注入攻击与防御word_SQL注入防御与绕过的几种姿势
- linux中DNS的介绍及DNS的高速缓存
- 【PAT甲级】1037 Magic Coupon (25 分) C++ 全部AC
- 交换机两个链路相连一些设置
- Android学习总结(1)——好的 Android 开发习惯
- viper4android fx2.7,ViPER4Android FX下载-ViPER4Android FX(蝰蛇音效fx)2.7.1.0 安卓版下载_东坡手机下载...
- Google高级搜索命令
- 小程序+二维码(带logo图片,可直接运行)
- JavaScript常见问题及答案
- Photoshop设计网站原型图
- mybatis如何判断update操作是否成功
- 以太坊solidity智能合约-生成随机数
- 【递推矩阵快速幂】hdu 2604
- KDJ金叉死叉分析以及KDJ金叉的买点形态
- js如何运行python代码_手把手教你如何使用Python执行js代码
- (收藏)刘德华获奖全记录“经典”
- Walle 瓦力 安装部署
- springBoot经验积累
- thinkpad 开机按f12
- C语言开发环境,请查收