当前位置: 首页 > article >正文

Guarding the Chessboard(UVA 11214)

网址如下:

Guarding the Chessboard - UVA 11214 - Virtual Judge

(第三方网址)

绞尽脑汁优化算法,结果暴力遍历就够了

孩子你无敌了

本质上是IDA

甚至不用剪枝

代码如下:

#include<cstdio>
#include<algorithm>
#include<cstring>

const int maxn = 9;

bool G[maxn][maxn];
int vis[4][17];
int n, m;

bool succeed(void){
   for(int i = 0; i < n; i++)
      for(int j = 0; j < m; j++)
         if(G[i][j] && !vis[0][i] && !vis[1][j] && !vis[2][i + j] && !vis[3][i - j + 8])
            return false;
   return true;
}
bool dfs(int idx, int d, int maxd){
   if(succeed()) return true;
   if(d == maxd) return false;
   for(int cur = idx; cur < n * m; cur++){
      int i = cur / m, j = cur % m;
      vis[0][i]++; vis[1][j]++; vis[2][i + j]++; vis[3][i - j + 8]++;
      if(dfs(idx + 1, d + 1, maxd)) return true;
      vis[0][i]--; vis[1][j]--; vis[2][i + j]--; vis[3][i - j + 8]--;
   }
   return false;
}

int main(void)
{
   int kase = 0;
   while(scanf("%d", &n) && n){
      scanf("%d", &m); getchar();
      for(int i = 0; i < n; i++){
         for(int j = 0; j < m; j++)
            G[i][j] = getchar() == 'X';
         getchar();
      }
      for(int maxd = 1; maxd <= std::min(m, n); maxd++){
         memset(vis, 0, sizeof(vis));
         if(dfs(0, 0, maxd)){
            printf("Case %d: %d\n", ++kase, maxd);
            break;
         }
      }
   }

   return 0;
}


http://www.kler.cn/a/386696.html

相关文章:

  • 论文 | The Capacity for Moral Self-Correction in LargeLanguage Models
  • Vue3 -- 环境变量的配置【项目集成3】
  • ES6字符串的新增方法
  • 操作系统lab4-页面置换算法的模拟
  • 《Django 5 By Example》阅读笔记:p76-p104
  • #include<string>和#include<string.h>有什么区别
  • uniapp—android原生插件开发(3Android真机调试)
  • 网络--传输层协议--TCP
  • 【LeetCode每日一题】——802.找到最终的安全状态
  • C++学习笔记----10、模块、头文件及各种主题(三)---- 连接
  • VMWARE ESXI VMFS阵列故障 服务器数据恢复
  • aosp15系统窗口闪屏原生bug-dim图层相关-你会修改吗?
  • Qt教程(007):资源文件添加
  • nodejs:下载,安装,系统环境配置,更换镜像
  • Leetcode - 周赛422
  • Kafka集群的安装与部署
  • 《Android 车载 Launcher 开发 - 显示 Widget》
  • docker pull/build 失败 设置国内镜像源
  • 《C++ 网络编程:高效实现 TCP/IP 与 UDP 通信》
  • 数据分析-39-时间序列分解之经验小波分解EWT
  • 发顶会首选:大模型+时间序列!掌握这3大切入点,小白也能轻松上手!
  • 排序算法基础
  • C/C++ 中的预处理器指令有哪些?举例说明其用途
  • ssm基于JAVA的网上订餐管理系统+vue
  • Git进阶(十八):git rebase详解
  • DSP28335学习笔记-1