acwing-378. 骑士放置(最小独立集)

该博客讨论了一个关于国际象棋骑士的优化问题。在N×M的棋盘上,存在一些禁放区域,目标是找到最大数量的骑士,使得它们之间无法互相攻击。博主提供了一个C++代码实现,通过回溯搜索找到最优解,最终输出可以放置的最大骑士数。此问题涉及图论和搜索算法。
摘要由CSDN通过智能技术生成

给定一个 N×M 的棋盘,有一些格子禁止放棋子。

问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的“骑士”,类似于中国象棋的“马”,按照“日”字攻击,但没有中国象棋“别马腿”的规则)。

输入格式
第一行包含三个整数 N,M,T,其中 T 表示禁止放置的格子的数量。

接下来 T 行每行包含两个整数 x 和 y,表示位于第 x 行第 y 列的格子禁止放置,行列数从 1 开始。

输出格式
输出一个整数表示结果。

数据范围
1≤N,M≤100

输入样例:
2 3 0
输出样例:
4
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>PII;
#define x first
#define y second
const int N = 110,M = 110;
int g[N][M];
PII match[N][M];
int vis[N][M];
    int n,m,k;
int dx[8] = {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值