HDOJ 2510 符号三角形
2015-11-12 13:18
225 查看
Total Submission(s): 1238 Accepted Submission(s): 656
[align=left]Problem Description[/align]
符号三角形的 第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异 号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同 。 n=7时的1个符号三角形如下:
+ + - + - + +
+ - - - - +
- + + + -
- + + -
- + -
- -
+
[align=left]Input[/align]
每行1个正整数n <=24,n=0退出.
[align=left]Output[/align]
n和符号三角形的个数.
[align=left]Sample Input[/align]
15
16
19
20
0
[align=left]Sample Output[/align]
15 1896
16 5160
19 32757
20 59984
看了大神的思路,可以把“-”看成1,“+”看成0;所以根据异或运算1^1=0;1^0=1;0^0=0。把0,1取代符号。
暴力dfs,然而超时,不过思路很好,代码如下:
最后还是无耻地用打表过了这题:
符号三角形
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1238 Accepted Submission(s): 656
[align=left]Problem Description[/align]
符号三角形的 第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“,2个异 号下面是”-“ 。计算有多少个不同的符号三角形,使其所含”+“ 和”-“ 的个数相同 。 n=7时的1个符号三角形如下:
+ + - + - + +
+ - - - - +
- + + + -
- + + -
- + -
- -
+
[align=left]Input[/align]
每行1个正整数n <=24,n=0退出.
[align=left]Output[/align]
n和符号三角形的个数.
[align=left]Sample Input[/align]
15
16
19
20
0
[align=left]Sample Output[/align]
15 1896
16 5160
19 32757
20 59984
看了大神的思路,可以把“-”看成1,“+”看成0;所以根据异或运算1^1=0;1^0=1;0^0=0。把0,1取代符号。
暴力dfs,然而超时,不过思路很好,代码如下:
#include<cstdio> #include<cstring> int a[25][25],ans[25]; void dfs(int n) { int i,j,cnt=0; if(n>24) return ; for(i=0;i<=1;++i) { a[1] =i; cnt+=i; for(j=2;j<=n;++j) { a[j][n-j+1]=a[j-1][n-j+1]^a[j-1][n-j+2]; cnt+=a[j][n-j+1]; } if(cnt*2==n*(n+1)/2) ans ++; dfs(n+1); cnt-=i; for(j=2;j<=n;++j) { a[j][n-j+1]=a[j-1][n-j+1]^a[j-1][n-j+2]; cnt-=a[j][n-j+1]; } } } int main() { int n; memset(ans,0,sizeof(ans)); dfs(1); while(scanf("%d",&n)&&n) printf("%d %d\n",n,ans ); return 0; }
最后还是无耻地用打表过了这题:
#include<cstdio> int main() { int a[25]={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}; int n; while(scanf("%d",&n)&&n) printf("%d %d\n",n,a ); return 0; }
相关文章推荐
- iOS 8 Spring Animation
- iOS中的转场动画简介
- 图像处理中的数学原理详解10——理解泛函的概念
- actionbar的基本使用
- protocol buffers
- Cannot get a connection, pool exhausted
- Linux操作系统文件系统基础知识详解
- PEP8——Python代码规范
- Codeforces 591B Rebranding
- 教你如何破解软件
- JS闭包与变量
- 2015-11-12 English
- HBase表描述和修改
- Android UI 线程执行操作的三种方式
- shell 取得上个月的开始结束日期
- java常用工具类 - 全角转半角、半角转全角
- 关于spring 中集成shrio注意点
- 如何在TortoiseGit(pageant)中自动导入ppk文件
- 来一发,网页下拉刷新
- iOS在UITableView全面解析