首页 > 其他分享 >[GDCPC2023] Peg Solitaire

[GDCPC2023] Peg Solitaire

时间:2024-08-21 16:39:32浏览次数:13  
标签:false int GDCPC2023 ny 棋子 Solitaire ans return Peg

题目传送门

题意

每次可以选择棋盘上的一个棋子,让这个棋子跳过相邻的一个棋子并且吃掉跳过的棋子,问你棋盘上最少能剩余几枚棋子。

思路

$1 \le n,m \le 6$,于是 dfs + 回溯暴力枚举。

具体见代码:

#include<bits/stdc++.h>
using namespace std;
int T,n,m,k,ans;
int mv[4][2]={{2,0},{-2,0},{0,2},{0,-2}};
bool c[10][10];
bool canMove(int x,int y,int dx,int dy){
	int nx=x+dx,ny=y+dy;
	int jx=x+dx/2,jy=y+dy/2;
	if(nx<1||ny<1||nx>n||ny>m) return false;
	if(c[jx][jy]==false) return false;
	if(c[nx][ny]==true) return false;
	return true;
}
void dfs(int mink){
	ans=min(ans,mink);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(c[i][j]==true){
				for(int v=0;v<4;v++){
					int dx=mv[v][0],dy=mv[v][1];
					if(canMove(i,j,dx,dy)){
						c[i][j]=false;
						c[i+dx/2][j+dy/2]=false;
						c[i+dx][j+dy]=true;
						dfs(mink-1);
						c[i][j]=true;
						c[i+dx/2][j+dy/2]=true;
						c[i+dx][j+dy]=false;
					}
				}
			}
		}
	}
}
int main(){
	cin>>T;
	while(T--){
		memset(c,0,sizeof(c));
		ans=INT_MAX;
		cin>>n>>m>>k;
		for(int x,y,i=1;i<=k;i++){
			cin>>x>>y;
			c[x][y]=true;
		}
		dfs(k);
		cout<<ans<<endl;
	}
	return 0;
}

标签:false,int,GDCPC2023,ny,棋子,Solitaire,ans,return,Peg
From: https://www.cnblogs.com/WuMin4/p/18371957

相关文章

  • ffmpeg批量mov转换mp4格式脚本
    vim convertMP4.sh 输入脚本:#!/bin/bash#检查是否提供了输入目录路径if[-z"$1"];thenecho"Usage:$0<input_directory>"exit1fi#获取输入目录路径input_directory="$1"#检查输入目录是否存在if[!-d"$input_directory"];......
  • Qt+ffmpeg环境搭建
    Qt+ffmpeg环境搭建各平台常见视频开发库举例:iOS:AVFoundationAudioUnitAndroid:MediaPlayer,MediaCodecWindows:DirectShowLinux:GStreamerFFmpeg库是一个跨平台的视频开发库,还有libVLC也是一个跨平台的视频开发库掌握了其中一个库,也能很快上手其它库,因为音视频解......
  • FFmpeg的入门实践系列一
    欢迎诸位来阅读在下的博文~在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力!江山如画,客心如若,欢迎到访,一展风采文章目录参考环境本系列的适用人群FFmpeg的简介FFmpeg的下载与编译1.下载FFmpeg通过官方网站下载:通过Git克隆仓库:2.解压源......
  • lcd屏幕显示jpeg图片,其中lcd每个像素占据4字节
    //编译//arm-openwrt-linux-muslgnueabi-gcc-o17_safe_lcd_camera_test./jpeg_show.c-L./lib/-ljpeg-I./include/#include<stdio.h>#include<stdlib.h>#include<jpeglib.h>#include<setjmp.h>#include<stdint.h>#includ......
  • FFmpeg开发笔记(四十八)从0开始搭建直播系统的开源软件架构
    ​音视频技术的一个主要用途是直播,包括电视直播、电脑直播、手机直播等等,甚至在线课堂、在线问诊、安防监控等应用都属于直播系统的范畴。由于直播系统不仅涉及到音视频数据的编解码,还涉及到音视频数据的实时传输,因此直播领域采用的网络技术标准比较高,实现起来也比一般的WEB系统复......
  • 一个简单的Rtmp推流客户端(QT录音,OpenCV摄像,FFmpeg编码推流)
            RTMP(Real-TimeMessagingProtocol)是一种实时流媒体传输协议,常用于音视频直播。        RTMP推流客户端是一种能够将音视频数据推送到直播服务器的工具。QT录音是利用Qt库实现的录音功能。OpenCV摄像是利用OpenCV库实现的对摄像头的控制和图像处理功......
  • 为OpenCV1.0添加cvJpeg2Ipl函数
    由于在OpenCV1.0中只提供了从硬盘打开JPEG图像进行解码,有些时候如果JPEG的图像数据是从内存载入的,就无法使用这些曾经很方便高效的接口。为了实现这个目的,我们通过修改OpenCV1.0源码,在其源码包中添加函数,实现把jpeg数据从内存复制到IplImage结构中,这为我们进行相应处理会方......
  • FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向
    ​IT寒冬之下,程序员这个职业不再像以往那么吃香,尤其是APP开发的门槛越来越高,使得安卓程序员不得不求变,如果不在技术上及时转型提高,逆水行舟未来不可期呀。有鉴于此,博主整理了几个可供安卓程序员的技术转型发展方向,供大家参考。1、继续深耕Android的应用开发谷歌爸爸是安卓的爹......
  • linux笔记(1):ubuntu环境下,基于SDL2运行lvgl+ffmpeg播放mp4
    文章目录1.ubuntu安装ffmpeg1.1源码安装1.1克隆ffmpeg源码1.2配置编译条件,编译,安装1.2直接安装依赖包2.下载lvgl源码2.1测试原始代码2.2运行lv_example_ffmpeg_2()例程2.2.1配置LV_USE_FFMPEG为12.2.2lv_example_ffmpeg_2()替换lv_demo_widgets()2.2.3链接......
  • FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
    ​不管是传统互联网还是移动互联网,实时数据传输都是刚需,比如以QQ、微信为代表的即时通信工具,能够实时传输文本和图片。其中一对一的图文通信叫做私聊,多对多的图文通信叫做群聊。除了常见的图文即时通信,还有实时音视频通信,比如一对一的音频通话、一对一的视频通话等等,此时可采用W......