2017-第八届蓝桥杯大赛个人赛省赛(软件类)真题 C大学A组


分析:数据比较小,可以用dfs,但是用这个方法怪难受的,重复步骤太多了
考虑先找到边界上能出边界的点集E,将所有的边反向,E能走到的点即为能走出边界的点

分析:又是一道搜索题,用string来表示出每个状态,记录每个状态的0点,深搜四种跳法,环状取模就好


分析:很明显的一道递归题
考虑当前位置分别放啊a,b,c
f(a-1,b,c,n-1)+f(a,b-1,c,n-1)+f(a,b,c-1,n-1)

还是一道搜索题,但是特别的是这次这个搜索不好搜。既然格子不好搜,那我们就搜两个图形的边界,边界必定过中心点

#include<bits/stdc++.h>
using namespace std;

int X[] = {0, -1, 1, 0, 0};
int Y[] = {0, 0, 0, -1, 1};

bool vis[10][10];
int res = 0;

void dfs(int x, int y){
  if(x == 0 || y == 0 || x == 6 || y == 6){
    res++;
    return ;
  }
  for(int i = 1 ; i <= 4 ; i++){ //上下左右四个方向
    x += X[i]; y += Y[i]; //走一步
    if(!vis[x][y]){ // 若该点未访问则继续深搜
      vis[x][y] = true; // 当前的点标注为已访问
      vis[6 - x][6 - y] = true;
      dfs(x, y); // 继续深搜
      vis[6 - x][6 - y] = false;
      vis[x][y] = false;
    }
    x -= X[i]; y -= Y[i];
  }
}

int main(){
  vis[3][3] = true;
  dfs(3, 3);
  cout << res / 4 << endl;
  return 0;
}


分析:就是一道模板题

首先看看结论

也就是说n个数互质的话,一定是能满足的
如果n个数不互质,就是INF
剩下的就是一个完全背包

就是一道简单的二分题目

posted @   wzx_believer  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示