hdu 2510 符号三角形 (DFS+打表)
2014-03-17 20:06
309 查看
符号三角形
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 811 Accepted Submission(s): 403
[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
[align=left]Source[/align]
ECJTU 2008 Autumn Contest
[align=left]Recommend[/align]
lcy | We have carefully selected several similar problems for you: 2512 2515 2509 2517 2514
这题还比较好吧,开始写了代码发现一定会超时,后来看了别人的解法再想想,可以打表解决,小菜的dfs一般,解24时要好几分钟...
还有题目加减号的情况和异或一样,于是用01表示方便计算。
#include<stdio.h> #include<string.h> int n,cnt,m; int c[50]; int judge(int c0[]) { int cc=0; int s[50]; for(int i=0;i<n;i++){ s[i]=c0[i]; if(c0[i]) cc++; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++) s[j]=c0[j]; for(int j=0;j<n-i-1;j++) if(c0[j]=s[j]^s[j+1]) cc++; } if(cc==m) return 1; return 0; } void dfs(int id) { if(id==n){ cnt+=judge(c);return; } c[id]=0; dfs(id+1); c[id]=1; dfs(id+1); return; } int main(void) { //freopen("C:\\Users\\Administrator\\Desktop\\in.txt","r",stdin); //freopen("C:\\Users\\Administrator\\Desktop\\out.txt","w",stdout); while(scanf("%d",&n)!=EOF) { memset(c,0,sizeof(c)); m=(n+1)*n/2; if(m%2){ //小剪枝 printf("%d %d\n",n,0); continue; } m/=2; cnt=0; dfs(0); printf("%d %d\n",n,cnt); } return 0; } /* */
求得解后打表
#include<stdio.h> int ans[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 main(void) { int n; while(scanf("%d",&n),n) { printf("%d %d\n",n,ans ); } return 0; }
相关文章推荐
- hdu 2510 符号三角形【DFS+打表】
- hdu 2510 符号三角形 dfs+打表
- HDU 2510 符号三角形 dfs打表
- 符号三角形(hdu 2510 搜索+打表)
- HDU 2510 符号三角形 暴力打表
- hdu 2510 符号三角形 (状压dp打表存入文件,O(1))
- HDU 2510 符号三角形 【DFS】
- HDU 2510 符号三角形(dfs)
- HDU 2510--符号三角形【DFS】
- HDU 2510 符号三角形 深搜打表
- 符号三角形 - HDU2510【DFS+打表】
- HDU 2510 符号三角形 NYOJ491 幸运三角形
- hdu 2510 符号三角形 回溯
- 符号三角形_hdu_2510(深搜).java
- hdu2510 dfs打表
- hdu 2510 符号三角形
- HDU 2510 符号三角形
- HDU 2510 符号三角形
- HDU 2510 符号三角形
- 符号三角形 HDU - 2510