题目描述解题思路源代码其他真题
题目描述6x6的方格,沿着格子的边线剪开成两部分。
要求这两部分的形状完全相同。
如图:p1.png, p2.png, p3.png 就是可行的分割法。
试计算:
包括这3种分法在内,一共有多少种不同的分割方法。
注意:旋转对称的属于同一种分割法。
请提交该整数,不要填写任何多余的内容或说明文字。
我们看到这道题,首先以为是在格子里面做标记来做题。实际上这样很麻烦。我们应当是线段交点标记来做题。
以最中间的交点(3,3)为基点进行移动。有两个指针,两指针行走的方向必相反。最终把格子分成对称的两块。
看到有题目提示“注意:旋转对称的属于同一种分割法。”。那么,最终答案应该要除于4。因为一个图形,旋转4个90度,都是一样的。
答案:509 源代码
public class Main {
static int ans;//答案变量
static int[][] dire={ {-1,0},{1,0},{0,-1},{0,1} };//四个方向
static int[][] vis=new int[7][7];//0~6
static void dfs(int x,int y) {
if(x==0||y==0||x==6||y==6) {//满足条件的,就ans++
ans++;
return;
}
//当前的点标注为已访问
vis[x][y]=1;
//对称点也标注为已访问
vis[6-x][6-y]=1;
for(int k=0;k<4;k++) {
int nx=x+dire[k][0];
int ny=y+dire[k][1];
//新坐标
if((nx < 0)|| nx> 6||ny<0||ny>6) continue;
if(vis[nx][ny]==0) {
dfs(nx,ny);
}
}
//回溯
vis[x][y]=0;
vis[6-x][6-y]=0;
}
public static void main(String[] args) {
dfs(3,3);
System.out.println(ans/4);
}
}
其他真题
13年蓝桥杯Java A组省赛
第一题世纪末的星期
第二题振兴中华
第三题梅森素数
第四题颠倒的价牌
第五题三部排序
第六题逆波兰表达式
第七题错误票据
第八题带分数
第九题剪格子
第十题大臣的旅费
13年蓝桥杯Java B组省赛
第一题世纪末的星期
第二题马虎的算式
第三题振兴中华
第四题黄金连分数
第五题有理数类
第六题三部排序
第七题错误票据
第八题幸运数
第九题带分数
第十题连号区间数
13年蓝桥杯Java C组省赛
2013年第四届蓝桥杯Java C组省赛1~5题
2013年第四届蓝桥杯Java C组省赛6~10题
17年蓝桥杯Java A组省赛
第一题:迷宫
第二题:9数算式



