n只有24 可以写个暴力搜索,然后打表,不然这个很难通过剪枝直接优化到1s以内。

 #include<bits/stdc++.h>

 #define inf 0x3f3f3f3f

 const int maxn=;

 using namespace std;

 int n,m,ans;

 int res[maxn+]={,,,,,,,,,,,,,,,,,,,,,,,,};

 int a[maxn+][maxn+];

 void dfs(int layer,int lnum,int pos,int nei,int n){
//printf("%d %d %d %d\n",layer,lnum,pos,nei);
if(pos+nei>m) return ;
if(pos-nei>(m-pos-nei)) {
//printf("%d %d\n",pos,nei);
return ;
}
if(layer==&&pos==m/&&nei==m/){
ans++;
return ;
}
if(layer==&&(pos!=m/||nei!=m/)) return ;
if(pos>m/||nei>m/) return ;
if(layer==n&&lnum<=layer){
a[layer][lnum]=;
if(lnum==layer)
dfs(layer-,,pos+,nei,n);
else dfs(layer,lnum+,pos+,nei,n);
a[layer][lnum]=-;
if(lnum==layer)
dfs(layer-,,pos,nei+,n);
else dfs(layer,lnum+,pos,nei+,n);
} else if(layer!=n){
if(lnum<=layer){
if(a[layer+][lnum]==a[layer+][lnum+]){
a[layer][lnum]=;
if(lnum==layer)
dfs(layer-,,pos+,nei,n);
else dfs(layer,lnum+,pos+,nei,n);
} else {
a[layer][lnum]=-;
if(lnum==layer)
dfs(layer-,,pos,nei+,n);
else dfs(layer,lnum+,pos,nei+,n); }
} }
} int main()
{
/*for(int i=1;i<=24;i++){
m=(i*(i+1)/2);
if(m&1){
printf("0\n");
} else {
ans=0;
dfs(i,1,0,0,i);
printf("%d\n",ans);
}
}*/
while(scanf("%d",&n)!=EOF&&n){
printf("%d %d\n",n,res[n]);
}
return ;
}

最新文章

  1. C#基础:飞行棋游戏
  2. js-统计选项个数
  3. 一些Discuz!代码
  4. python数据类型之 set
  5. POJ 1088 滑雪 (记忆化搜索)
  6. cocos2d-x 触摸偏移
  7. keilkill.bat
  8. php流行笔试题及答案
  9. 二叉查找树:Python实现
  10. C#设计模式之二十三解释器模式(Interpreter Pattern)【行为型】
  11. 【QAQ的Minecraft】
  12. 无service.bat的tomcat服务怎么设置自启动
  13. c提高第六次课 文件读取
  14. http协议常见状态码含义
  15. shell 脚本加密
  16. FortiGate上架前准备
  17. python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性)
  18. day0321正则表达式
  19. Java URLEncoder URLDecoder
  20. ajax写用户注册

热门文章

  1. Mac系统存储-其他存储无故增大
  2. 重新拾取:ASP.NET Core WebApi 使用Swagger支持授权认证
  3. Linux下Fork与Exec
  4. leetcode 130 Surrounded Regions(BFS)
  5. leetcode 102 Binary Tree Level Order Traversal(DFS||BFS)
  6. nginx使用ssl模块配置HTTPS支持 &lt;转&gt;
  7. gulp记录
  8. 01PS基础
  9. dmidecode 命令
  10. Spring笔记03(Spring创建对象的三种方式)