1931: wjw的剪纸

Time Limit: 4 Sec  Memory Limit: 128 MB
Submit: 26  Solved: 4
[Submit][Status][Web Board]

Description

ly最近要生日了,wjw决定送一份礼物给这个傻孩子,考虑了一下礼物,发现贵的买不起,远的不想去,麻烦的不想做...最后wjw决定剪一张好看的图案给ly当作礼物,毕竟礼轻情意重嘛,情谊重就行了!
现在wjw手里有一张正方形的彩纸,这张彩纸的边长是n,由n*n个小正方形组成,现在wjw沿着小正方形的边把这张彩纸剪成两部分,为了美观,他决定剪成形状完全相同的两部分...这时,wjw突发奇想,想知道到底能剪出多少种不同的图案?但是wjw的智商不支持他回答自己的问题,于是他只能求助你,请你告诉他答案是多少.

//比如6*6的彩纸,以下是两种剪法

Input

每组数据包含多组测试数据,每行一个正整数n(4<=n<=10)

Output

每行一个正整数表示答案

Sample Input

4

Sample Output

11

解析:可以发现,1---奇数边的肯定不能平分面积,所以答案为 1;

2---偶数边(以6*6为例)我们可以发现,分成两个形状相同,面积相同的都是以中心点(3,3)中心对称的

所以,我们从中心点出发,dfs到边界,有多少种说明有多少剪法,但是你会发现,答案不对,因为我们重复了,因为从中心到边界,我们是往四个方向的,而且每一个方向都是可以以(3,3)中心对称,所以会重复了,答案就是ans/4;

******注意:这里10*10是很大的,要跑很久,所以在提交时直接n==10,puts(“答案”),不然就会超时(毕竟我是跑了3  4分钟才出来答案)

#include<bits/stdc++.h>
using namespace std;
/*const int N = 10;
long long ans = 0;
int mpt[N+1][N+1];
int dir[4][2] = {0,1,1,0,0,-1,-1,0};
void dfs(int x,int y)
{if(x == 0 || y == 0 || x == N || y == N){int i,j;ans ++;return;}for(int i = 0 ; i < 4 ; i ++){int tx = x + dir[i][0];int ty = y + dir[i][1];if(mpt[tx][ty])continue;mpt[tx][ty] = 1;mpt[N-tx][N-ty] = 1;dfs(tx,ty);mpt[tx][ty] = 0;mpt[N-tx][N-ty] = 0;}
}*/
int main()
{int n;while(~scanf("%d",&n)){if(n==5||n==7||n==9)puts("0");else if(n==4)puts("11");else if(n==6)puts("509");else if(n==8)puts("184525");else {puts("562070107");/*ans=0;mpt[N/2][N/2] = 1;dfs(N/2,N/2);printf("%lld\n",ans/4);*/}
}return 0;
}

zcmu-1931(dfs方格切割)相关推荐

  1. ZCMU - 1931: wjw的剪纸

    题目链接:点击打开链接 题目大意:略. 解题思路:从中心点开始搜索,每次可以走四个方向.搜索的过程要将中心对称点顺便标记. AC 代码 #include<bits/stdc++.h> #i ...

  2. 25行代码AC_ 2017年C/C++ A组第四题 方格分割(dfs剪痕+解题报告)

    励志用少的代码做高效表达 问题描述: 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同.   如图:p1.png, p2.png, p3.png 就是可行的分割法.   试计算: ...

  3. 蓝桥杯2015决赛-方格填数-枚举 or dfs

    题目描述 在2行5列的格子中填入1到10的数字. 要求:相邻的格子中的数,右边的大于左边的,下边的大于上边的. 如下图所示的2种,就是合格的填法. 请你计算一共有多少种可能的方案. 输出 请输出该整数 ...

  4. dfs记忆化搜索(带限制的选择问题) 讲解:LeetCode打家劫舍||| / 蓝桥 地宫取宝/蓝桥 k进制数//剪格子//方格分割

    记忆化递归的必要性: 普通的递归可能会重复求解某一值,类似斐波那契数列.同样的子问题可能会被求解多次,这样就会很慢很慢很慢 解决方法:我们把历史求解(子问题)记录下来,如果下次需要求解子问题,那么直接 ...

  5. 2017蓝桥杯C++A:方格分割(DFS)

    四.题目:方格分割 6x6的方格,沿着格子的边线剪开成两部分. 要求这两部分的形状完全相同. 如图:p1.png, p2.png, p3.png 就是可行的分割法. 试计算: 包括这3种分法在内,一共 ...

  6. 【数学】C107_LQ_报纸页数 平方怪圈 猴子分香蕉 方格计数 矩形切割(归纳法 | 打印归纳)

    一.报纸页数 X星球日报和我们地球的城市早报是一样的,都是一些单独的纸张叠在一起而已.每张纸印有4版. 比如,某张报纸包含的4页是:5,6,11,12,可以确定它应该是最上边的第2张报纸.我们在太空中 ...

  7. 求解3*3方格填字游戏问题(DFS + 质数)

    继续来水一道题... 一. 实验目的 加深对求解一个3 * 3方格两两相邻为质数求解算法的理解; 通过本次试验掌握将算法转换为上机操作; 加深对深度优先搜索思想的理解,理解回溯原理即实现过程,并利用其 ...

  8. 16年蓝桥杯省赛-方格填数(dfs+回溯)

    如下的10个格子(图片在压缩文件里) 填入0~9的数字.要求:连续的两个数字不能相邻. (左右.上下.对角都算相邻) 一共有多少种可能的填数方案? 请填写表示方案数目的整数. 思路:这道题目其实思路蛮 ...

  9. [蓝桥杯2017初赛]方格分割-dfs+思维

    解题思路: 这是大佬的思路: 这道题可能上来会想到搜格子,但搜格子意味着更高的复杂度以及判连通的需要,本题似乎搜索要切开的边更优.由题意,这一条切割线必定经过图的中心点,那么我们一旦确定了半条到达边界 ...

最新文章

  1. 【C++】多线程与条件变量【三】
  2. bp 字母识别 java_Matlab实现BP网络识别字母
  3. 十条不错的编程观点(转载)
  4. SharpStrike:基于C#实现的后渗透漏洞利用工具
  5. 部署好网站,同局域网中电脑无法访问的问题的解决方案
  6. python 数字转化excel行列_Python实现excel的列名称转数字、26进制(A-Z)与10进制互相转换...
  7. CVPR 2019 | 腾讯AI:做好活体检测,模型重要,数据亦然
  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_5_InvalidClassException异常_原理...
  9. 9款优秀的代码比对工具,没用过就很离谱
  10. 弹性系数和线径的计算公式_压缩弹簧的弹性系数计算
  11. 新版火狐 拖 功能_Firefox 3:新功能,新功能和新功能
  12. html隐藏地址栏,js新打开页面隐藏地址栏
  13. 三星android 安卓版本怎么升级包,三星A70官方安卓9固件系统线刷升级更新包:BRI-A7050ZHU3ASJ1...
  14. Sequential Recommendation with Self-Attentive Multi-Adversarial Network
  15. Linux下Moudle工具的介绍与使用
  16. I-Deas TMG 培训资料 (1)
  17. Android 自定义二维码
  18. Access中的MDE文件
  19. OPENMV上的目标检测,目标定位模型
  20. python函数返回多个变量_Python中接收函数多个返回结果的两种方法

热门文章

  1. 【JulyEdu-Python基础】第 8 课:Python第三方库
  2. JavaScript学习笔记之 数组方法一 堆栈 和队列
  3. 网上图书商城项目学习笔记-035工具类之JdbcUtils及TxQueryRunner及C3P0配置
  4. Linux企业级项目实践之网络爬虫(28)——爬虫socket处理
  5. Golang 库学习笔记 Gin(二)
  6. Linux/Unix下的任务管理器-top命令
  7. 【Python】for 循环倒叙遍历
  8. 【Leetcode】二叉树展开为列表(递归思想)
  9. [云炬创业基础笔记] 第四章测试14
  10. 云炬金融每日一题20210906