符号三角形问题(dfs)
来源:互联网 发布:苏州教师网络培训 编辑:程序博客网 时间:2024/05/17 22:50
符号三角形
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1800 Accepted Submission(s): 930
Problem Description
符号三角形的 第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异 号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同 。 n=7时的1个符号三角形如下:
+ + - + - + +
+ - - - - +
- + + + -
- + + -
- + -
- -
+
+ + - + - + +
+ - - - - +
- + + + -
- + + -
- + -
- -
+
Input
每行1个正整数n <=24,n=0退出.
Output
n和符号三角形的个数.
Sample Input
151619200
Sample Output
15 189616 516019 3275720 59984
分析:dfs代码超时,数据较小,可以打表过,之后再贴优化代码
代码如下:
#include <stdio.h>int N;int count=0;int a[1005][1005];int judge(){int i,j;long long n=0,m=0;for(j=0;j<N;j++){//统计第一行的正负个数 if(a[0][j])n++;elsem++;}for(i=1;i<N;i++){for(j=0;j<N-i;j++){//统计其他行的正负个数 a[i][j]=!(a[i-1][j]^a[i-1][j+1]);if(a[i][j])n++;elsem++;}}if(n==m)return 1;elsereturn 0;}void dfs(int t){//t代表层数,a代表加号个数,b代表减号个数 ,index代表上一层是+还是- if(t==N){if(judge())count++;return ;}//负号 a[0][t]=0;dfs(t+1);//正号 a[0][t]=1;dfs(t+1);}int main(){while(scanf("%d",&N),N){count=0;dfs(0);printf("%d\n",count);}return 0;}
0 0
- 符号三角形问题(dfs)
- 符号三角形(dfs)
- HDU 2510 符号三角形(dfs)
- 符号三角形问题(回溯)
- 符号三角形问题(回溯)
- HDU 2510 符号三角形 【DFS】
- HDU 2510--符号三角形【DFS】
- hdu2510 符号三角形(dfs+打表) 解题报告
- hdu 2510 符号三角形(dfs+打表)
- 符号三角形问题(回溯法)
- 符号三角形问题
- 符号三角形问题
- 符号三角形问题
- ZQUOJ1923符号三角形问题
- 算法 符号三角形问题
- 符号三角形问题
- 符号三角形问题
- 符号三角形问题
- 手机访问PC站时自动跳转到手机站
- freeswitch修改mod_sofia
- iOS各种调试技巧豪华套餐
- Redis2.8从入门到精通文档
- QQ登录遇到的坑
- 符号三角形问题(dfs)
- 【Leetcode】48. Rotate Image
- 学习中的知识点:
- python 生成uuid
- 优秀文章的链接收藏
- jQuery初始化select选项
- ubuntu 进入 recovery mode 修改系统文件
- 获取当前打开剪贴板的进程的ID
- express的简单安装