zoukankan      html  css  js  c++  java
  • 方格分割

    题目:6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。

    解题思路:将方格看成一个二维坐标,(0,0)为原点,(3,3)为中央对称点开始遍历,上下左右可以设置成数组dx[4]={1,0,-1,0},dy[4]={0,1,0,-1}

    map[7][7]数组代表该点的访问权限,当遍历到边界时,计数器加一。该题重点为分割线一定中心对称!!

     1 #include <iostream>
     2 #include <memory.h>
     3 #include <stdio.h>
     4 #include <stdlib.h>
     5 using namespace std;
     6 int dir[4][2]={0,1,0,-1,1,0,-1,0};
     7 int visited[10][10];
     8 int ans=0; 
     9 void dfs(int x,int y){
    10     if(x==0||y==0||x==6||y==6){//已经走到边界!!!!!! 
    11         ans++;
    12         return;
    13     }
    14     for(int i=0;i<4;i++){
    15         int x1=x+dir[i][0];
    16         int y1=y+dir[i][1];
    17         int x2=6-x1;
    18         int y2=6-y1;    
    19 
    20         if(x1>=0&&x1<=6&&y1>=0&&y1<=6){
    21             if(!visited[x1][y1]){//该点未被访问过 
    22                 visited[x1][y1]=visited[x2][y2]=1;//标记访问位 
    23                 dfs(x1,y1);//深搜
    24                 visited[x1][y1]=visited[x2][y2]=0;//回溯 
    25             }
    26              }
    27     }
    28 }  
    29 
    30 int main(){
    31     memset(visited, 0, sizeof(visited));
    32     visited[3][3]=1;
    33     dfs(3,3);
    34     cout<<ans/4<<endl; 
    35 }
  • 相关阅读:
    你认为做好测试计划工作的关键是什么?
    App压力测试MonkeyRunner整理
    小米2S手机
    APP耗电量专项测试整理
    App功能测试
    渗透测试_利用Burp爆破用户名与密码
    docker介绍
    redis-cluster
    Redis配置文件详情
    Redis-Sentinel哨兵
  • 原文地址:https://www.cnblogs.com/0211ji/p/13299875.html
Copyright © 2011-2022 走看看